如何使用HttpRequest调用WebService 代码如下
string url = "http://localhost:1857/Test.asmx/HelloWorld"; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; //request.Credentials = CredentialCache.DefaultCredentials; request.Timeout = 10000; byte[] data = Encoding.UTF8.GetBytes(Pars);//参数 request.ContentLength = data.Length; Stream writer = request.GetRequestStream(); writer.Write(data, 0, data.Length); writer.Close(); WebResponse response = request.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); String retXml = sr.ReadToEnd(); sr.Close(); XmlDocument doc = new XmlDocument(); doc.LoadXml(retXml); return doc;
WebService里面是这样的
/// <summary> /// Test 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class Test : System.Web.Services.WebService { [WebMethod] public string HelloWorld(string xml) { return "Hello World"; } }
web.config
<webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> </protocols> </webServices>
问题来了 不带参数可以访问到WebService 现在业务必须要参数 肿么该
不明白,你第一段代码没有用到WCF。
用Post方式访问WebService
@刘小备: 把参数放Content里,类似这样 arg1=sdfsdf&arg2=3434.就是用 RequestStream.Write
@Launcher: 不明白怎么加
@刘小备: byte[] data = Encoding.UTF8.GetBytes("xml=sdfsdfds");//参数
@Launcher: 还是不行 要不我把例子给你帮我弄下
@刘小备: 不行,就是请求不对。你用 Fiddler 抓个包,看看请求发送时候的格式是啥,按照那个写就行了。Asp.net 生成的 Web Service有个help页,直接通过它就可以调用服务。
不清楚,帮顶一下。
- -.
他一在是写了一个webservice,然后通过get,post的访问方式在访问这个webservice
right
ajax访问webservice把参数post过去不好么?
不用ajax
你在WCF那个服务项目中添加webservice的服务引用,不就行了啊
你很强大
看你的代码应该是支持带参数的方法调用的,你说不行是什么原因,最好能给出具体的错误,或者你可以单步执行调试,看看是出现了什么问题。
不会,Mark先,配楼主等答案。
1. 抓包得到WebService提交之后的XML报文
2. 自己组装XML报文,并在包体报文的属性中添加你要带的参数
3. 把组装后的报文直接Post到你WebService的源地址
第一步得到报文后,剩下就很好处理了~~~
首先你用fillder2先把请求的报文抓下来,然后再httprequest中拼接报文,然后提交报文,再得到报文后,进行报文解析
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <PROC_OR_GETLABSETBYDEPTCODE_Request xmlns="XXXX"> <request xmlns=""> <FDEPTCODE>04</FDEPTCODE>//这里就是请求的参数,直接填写相应的值即可 </request> </PROC_OR_GETLABSETBYDEPTCODE_Request> </s:Body> </s:Envelope>
上面是我抓到的包,你需要抓你那个webservice的包