WINFORM怎么从HTTP页上获取数据

bulls5988 2015-01-25 10:39:35
需要访问的是一个中间件服务器,http://192.168.100.2:8899/WebService.asmx/getCardsStatus?cellphone=???。
其中???是一组数字也是查询的关键字符串组。。
用浏览器方位这个地址:http://192.168.100.2:8899/WebService.asmx/getCardsStatus?cellphone=111
网页会显示{"cellphone": "111", "status": "ture"};

下面代码现在 Reader.MoveToContent(); 这句有错误"根级别上的数据无效。 行 1,位置 1。"。
如果去掉上一句MessageBox的结果是空。请问我的代码哪里有问题?请帮忙指正。


string strURL = "http://192.168.140.2:8899/WebService.asmx/getCardsStatus?cellphone=";
strURL += this.textBox1.Text;
//创建一个HTTP请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
request.Method="get";
HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
Stream s = response.GetResponseStream();
//转化为XML,自己进行处理
XmlTextReader Reader = new XmlTextReader(s);
Reader.MoveToContent();
string strValue = Reader.ReadInnerXml();
strValue = strValue.Replace("<", "<");
strValue = strValue.Replace(">", ">");
MessageBox.Show(strValue);
Reader.Close();
...全文
292 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
by_封爱 版主 2015-01-29
  • 打赏
  • 举报
回复
LZ思路不清晰... 这样来说 如果是webservice那么 你直接添加引用掉方法即可... 不用关心"WINFORM怎么从HTTP页上获取数据" 也不用关心什么xml之类的...你只管拿值 也就是

var xxoo=new webservice().xxoo(参数);
正常来说xxoo就是一个符合json规范的string 比如{"cellphone": "111", "status": "ture"} 你通过反序列化 可以拿到里面的值.. 如果你不想添加引用的话..你直接请求接口地址(接口要支持httpget才行). 那么你请求接口返回值是很长的字符串 但是实际上 里面是包含命名空间的 xml 然后在去解析找到对应的值.. 所以我觉得还是LZ看看 "如何添加引用"吧 根本不是写服务的人没告诉你清楚,是你了解的太少了..........
bulls5988 2015-01-29
  • 打赏
  • 举报
回复
主要写服务的人告诉我不清楚啊。。。。。。。
bulls5988 2015-01-29
  • 打赏
  • 举报
回复
问题是我这函数怎么调用啊?没有返回值函数没结果我也指导不过做WEBSERVICE的人用的得说就是这个方法啊。不给参数我怎么能返回结果呢?
於黾 2015-01-29
  • 打赏
  • 举报
回复
public void getCardsStatus(string cellphone) 无返回值的函数,你还用string型的变量去获取返回值,不报错才怪呢
bulls5988 2015-01-29
  • 打赏
  • 举报
回复
我添加了引用但是 我调用他的方法总不成功。我已经看到里面的接口:WebService 里面有方法 public void getCardsStatus(string cellphone) 我调用的时候,提示:“错误1无法将类型“void”隐式转换为“string” C:\Documents and Settings\Administrator\桌面\test\service_text\WindowsFormsApplication1\Form1.cs 27 25 WindowsFormsApplication1”。cc的类型定义成var也不行。
 
localhost.WebService obj = new localhost.WebService();
private void button1_Click(object sender, EventArgs e)
{
    string cc = obj.getCardsStatus(textBox1.Text);
     MessageBox.Show(cc);   
}
l13873666736 2015-01-27
  • 打赏
  • 举报
回复
有现成的JSON包可以操作JSON字符串的
编程有钱人了 2015-01-27
  • 打赏
  • 举报
回复
引用 4 楼 bulls5988 的回复:
唉 万万没想到 做这个WEBSERVICE的人告诉我 用JSON解析。。。 说里面的方法和接口他也不太清楚。。。
用什么方式解析,取决于 你服务器返回的是什么类型的数据
泡泡龙 2015-01-26
  • 打赏
  • 举报
回复
json就是字符串,实在不会的话,用split拆分
bulls5988 2015-01-26
  • 打赏
  • 举报
回复
唉 万万没想到 做这个WEBSERVICE的人告诉我 用JSON解析。。。 说里面的方法和接口他也不太清楚。。。
wind_cloud2011 2015-01-25
  • 打赏
  • 举报
回复
{"cellphone": "111", "status": "ture"};返回的json数据,你用 json解析就可
SPFarmer 2015-01-25
  • 打赏
  • 举报
回复
根级别上的数据无效---这个是因为你接收到的根本不是XML,而你要用XMLTextReader去解析它。你接收到的是文本,不是XML。 你这个方向不对。中间件提供的是webservice,所以要用webservice去请求,不要用httprequest。 在项目里添加webserice引用,添加完之后,VS会生成代理类。你可以直接用对象操作,不用httprequest再解析字符串。
EdsionWang 2015-01-25
  • 打赏
  • 举报
回复
在项目里面引用webservice,直接可以调用webservice里面的方法

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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