http发送和接受数据问题,大家帮忙看下!!!!

jieyi1106 2008-12-10 04:04:57
string param = string.Format("checkName={0}&checkCompany={1}&userName={2}&userNum={3}&userAddress{4}", this.EncodeConver(checkName), this.EncodeConver(checkCompany), this.EncodeConver(userName), this.EncodeConver(userNum), this.EncodeConver(userAddress));//所发送的数据
string result = this.SendRequest(param);
public string SendRequest(string param)
{
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(param);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("www.xxx.com"); //数据发送端口
request.Method = "POST";//发送方式
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
Stream sm = request.GetRequestStream();
sm.Write(data, 0, data.Length);
sm.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
这个地方 获取返回值,如果返回值是 OK就继续操作

if (response.StatusCode.ToString() != "OK") //还未获取返回值
...


}
但是 厂商那边 只返回 一个WEB页面,并不是返回给我一个字符串,而且 WEB页面是什么 也没说。
我这里想 获取这个URL的body, 如果这个body里面的内容不为空, 那么就证明他给了我返回,也就是说我数据发送成功了

这个获取 body的 内容不为空 应该如何来写, 这里卡住了,不知道如何下手
请大家帮帮忙!!!
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
80搬码工 2008-12-11
  • 打赏
  • 举报
回复

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
System.IO.StreamReader reader=new System.IO.StreamReader(response.GetResponseStream(),System.Text.Encoding.GetEncoding("gb2312"));
string result=reader.ReadToEnd();
if (result!="")
{
//....
}
jieyi1106 2008-12-11
  • 打赏
  • 举报
回复
其实 现在就是 厂商那边 没有提供具体 返回的是什么

而我这里 要根据他 是否返回了东西 而进行操作,方便日后和他们 核对


所以 HttpWebResponse response = (HttpWebResponse)request.GetResponse();

这个返回的地方怎么来 判断?
chagel 2008-12-11
  • 打赏
  • 举报
回复
乖乖,这个约定也太粗糙了吧
不过如果楼主的问题不难,就是要判断body标签内是否为空,简单的搜索匹配字符串呀。
... ...
Encoding encoding = System.Text.Encoding.GetEncoding(1252);
StreamReader reader = new StreamReader(response.GetResponseStream(),encoding);
string content = loResponseStream.ReadToEnd();
if(MatchResult(content)){
//返回数据成功
}
reader.Close();
response.Close();


private static bool MatchResult(string str)
{
string regex = "<\\s*body\\s*>\\s*<\\s*/\\s*body\\s*>";
System.Text.RegularExpressions.RegexOptions options = ((System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace | System.Text.RegularExpressions.RegexOptions.Multiline)
| System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(regex, options);
return reg.IsMatch(str);
}
sunshine_anycall 2008-12-11
  • 打赏
  • 举报
回复
判断body不为空,主要是看下body中是否有其他的表签了

        private int CountSymbol(int sum, string htmlcontent)
{
if (htmlcontent.IndexOf('>') != -1 || htmlcontent.IndexOf('<') != -1)
{
sum++;
CountSymbol(sum, htmlcontent);
}

return sum;
}

调用函数得出的结果大于4,则成立,body中含有其他标签
sunshine_anycall 2008-12-11
  • 打赏
  • 举报
回复
body不为空,就当做是有返回了
这样太不确定了吧,
最好是有个确定的标志吧
jieyi1106 2008-12-10
  • 打赏
  • 举报
回复
自己顶下
amanizty 2008-12-10
  • 打赏
  • 举报
回复
up~

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧