asp.net – 如何使用WebClient访问ASMX Web服务?
我试图在一个类中创建一个方法,使用WebClient访问Web服务上的WebMethod,并遇到问题.在
Windows上使用VS2010.
首先,是的,我知道我可以在类库中创建Web服务的Web引用,当然这是设计时绑定.但是,我需要能够使用仅在运行时提供的信息来访问Web服务.有一个商业原因,我不会进入这里,请随便一起去. 这似乎可以使用System.Net命名空间中的WebClient类.事实上,我能够得到有问题的服务,但我发送给它的数据似乎没有正确的格式,尽管我可以说它是一个格式正确的SOAP消息. WebException包含以下消息:“远程服务器返回错误:(415)不支持的媒体类型.” 这是代码: public string DoingBusiness() { WebClient client = new WebClient(); string destUri = "http://localhost/Service/Service.asmx?op=CommunicationsCheck"; StreamReader reader = new StreamReader(@"CommCheck.xml"); string data = String.Format(reader.ReadToEnd(),"The End is Near!"); reader.Close(); string response = client.UploadString(destUri,data); return response; } 离开敏感的实际xmlns,上面的StreamReader读取的数据如下所示: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <CommunicationsCheck xmlns="http://.../"> <communication>{0}</communication> </CommunicationsCheck> </soap:Body> </soap:Envelope> 这看起来像一个完美的SOAP消息.当然,“{0}”会填充有效负载字符串.如果WebMethod“CommunicationsCheck(字符串通信)成功运行,它将返回: <?xml version="1.0" encoding="utf-8" ?> <string xmlns="http://[service url]/">You sent 'The End is Near!'</string> 如果我通过浏览器或通过设计时Web引用访问服务,它会做什么. 所以,问题是,我在这里做错了,我得到了“(415)不支持的媒体类型” 是否需要设置WebClient上的属性?我是否需要提供包含UserAgent的Header?或者是其他东西? 解决方法
该死.我想我应该让别人回答这个问题,但回答一个人自己的问题是可以接受的,如果你发现自己的话.
无论如何,对这个问题的一些进一步研究似乎表明,我可能会猜测,即我需要设置一些Header属性,这是一个可能的解决方案.研究表明,属性将是“内容类型”,需要设置为“text / xml”.所以我添加了这一行: client.Headers.Add("content-type","text/xml"); 就在UploadString方法调用之前. 答对了! 发生了预期的反应. 有没有人注意到,一旦提出问题,有些问题的答案有时会变得不言而喻,而不是之前?有趣的现象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – IE没有为MVC5呈现DatePicker
- ASP.NET DataGrid和自定义分页
- asp.net-mvc – 使用Visual Studio和ASP.NET MVC加载时间非
- asp.net-mvc – 如何使用Moq模拟存储库Single(Expression>
- asp.net 2.0中利用Ajax2.0实现JSON传送大量页面数据
- asp.net – Visual Studio 2013项目使它成为武士刀项目是什
- asp.net – 为什么aspnet_users使用guid来代替id而不是增加
- asp.net url分页类代码
- asp.net-mvc – 在多个表单上指定验证摘要
- asp.net – 设置身份验证表单loginUrl动态?
- asp.net-mvc – 如何创建特定于区域,控制器和操作
- asp.net-mvc – 使用作为集合的模型进行Visual S
- asp.net-mvc – 是否有可能在ASP.NET MVC中对一些
- asp.net – 实体框架:Singletonish ObjectConte
- asp.net-mvc – 在ASP.NET MVC 4中未加载的捆绑包
- asp.net-mvc – 通过删除空格打破我的calc语句的
- asp.net – 防止页面在回发后滚动
- asp.net – ASP:NET确认密码字段
- asp.net – 如何使用Web服务返回接口或“复杂”值
- asp.net-mvc-3 – 如何在asp.net MVC剃刀中生成d