首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

ASP.NET使用Socket调用HTTP接口调试才返回数据,该怎么处理

2014-01-08 
ASP.NET使用Socket调用HTTP接口调试才返回数据using (Socket client new Socket(AddressFamily.InterNet

ASP.NET使用Socket调用HTTP接口调试才返回数据

using (Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) 
            { 
                client.Connect(IPAddress.Parse("192.168.1.7"), 80);//IP自己填 
  
                string content = "";//Send字符串自己按照规则拼接 
                client.Send(Encoding.Default.GetBytes(content)); 
  
                byte[] bytes = new byte[1000]; 
                client.Receive(bytes); 
  
                string recv = Encoding.Default.GetString(bytes);//这里是接收到的内容 
                //下面干你的活去吧 
            }


按照上面的方法调用接口,Recv返回数据格式为HTTP头和Body,为什么调试的时候HTTP头和Body都有,但是运行页面不调试的时候只有HTTP头,没有Body,请问怎么解决,多谢?
[解决办法]
没有遇到过,可能是网络发送数据引起的,
client.Receive(bytes);  这句你直接这样写会出问题

[解决办法]
加个循环和读取长度
int i=0
while(true){
if(client.Receive(bytes,0,bytes.length)<0){break;}
}
当然上面这句会造成阻塞,如果只是学习可以这样写来玩,如果要做实际的功能就得重新用一个思路了。
如你是读取的http协议,所以你提按照他的方式来读,先接收一部份数据,检查是事把header头读完毕,如果读完毕就解析头,并从头中得到content-length的长度,然后再根据这个值来读取剩下的,如果没有content-length那就用的分段发送再按分段发送的方式来读。这样就可以解决阻塞问题

热点排行