发送Http请求调用webService

如果调用WebService的不是在.NET中,无法直接添加web引用,那怎么调用webservice。

有两种方式

第一种方式:GET方式

  string strUrl = "http://127.0.0.1/rss/webservice.asmx/GetNews?topNum=2";
        HttpWebRequest hwrq = (HttpWebRequest)WebRequest.Create(strUrl);
        hwrq.Method = "GET";
        HttpWebResponse hwrp = (HttpWebResponse)hwrq.GetResponse();
        Stream stream = hwrp.GetResponseStream();
        XmlDocument doc = new XmlDocument();
        doc.Load(stream);
        string strLine = "";
        XmlNodeList list = doc.GetElementsByTagName("Table");
        for (int i = 0; i < list.Count; i++)
        {
            XmlNodeList chlist = list[i].ChildNodes;
            for (int j = 0; j < chlist.Count; j++)
            {
                strLine = strLine + chlist[j].Name + "\t" + chlist[j].InnerText + "\n";
            }
            strLine = strLine + "\n";
        }
        StreamWriter sw = new StreamWriter(@"c:/c.txt");
        sw.WriteLine(strLine);
        sw.Flush();
        sw.Close();

第二种方式:POST方式

string strUrl = "http://127.0.0.1/rss/webservice.asmx/GetNews";
        HttpWebRequest hwrq = (HttpWebRequest)WebRequest.Create(strUrl);
        hwrq.Method = "POST";
        hwrq.ContentType = "application/x-www-form-urlencoded";
        String param1 = HttpUtility.UrlEncode("topNum");
        param1 += "=" + HttpUtility.UrlEncode("5");
        byte[] bt = Encoding.UTF8.GetBytes(param1);
        hwrq.ContentLength = bt.Length;
        Stream sw = hwrq.GetRequestStream();
        sw.Write(bt, 0, bt.Length);
        sw.Close();
        HttpWebResponse hwrp = (HttpWebResponse)hwrq.GetResponse();
        Stream stream = hwrp.GetResponseStream();
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load(stream);
        XmlNodeList list = xmldoc.GetElementsByTagName("Table");
        string strLine = "";
        for (int i = 0; i < list.Count; i++)
        {
            XmlNodeList chlist = list[i].ChildNodes;
            for (int j = 0; j < chlist.Count; j++)
            {
                strLine = strLine + chlist[j].Name + "\t" + chlist[j].InnerText + "\n";
            }
            strLine = strLine + "\n";
        }
        StreamWriter writer = new StreamWriter(@"c:\c.txt");
        writer.WriteLine(strLine);
        writer.Flush();
        sw.Close();

get方式与post方式的主要区别在于post方式的参数要经过url编码,并在获得请求之前传送。

post的方式的参数一定要以实例中方式来写,否则会出现HTTP请求500错误。

string param1 = HttpUtility.UrlEncode("topNum");

param1+="="+HttpUtility.UrlEncode("5");

原文地址:https://www.cnblogs.com/Violety/p/11917296.html

时间: 2024-10-09 18:30:09

发送Http请求调用webService的相关文章

C# 使用 HttpPost 请求调用 WebService

原文:C# 使用 HttpPost 请求调用 WebService 之前调用 WebService 都是直接添加服务引用,然后调用 WebService 方法的,最近发现还可以使用 Http 请求调用 WebService.这里还想说一句,还是 web api 的调用简单. WebService 服务端代码: public class WebServiceDemo : System.Web.Services.WebService { [WebMethod] public string Hello

C# 使用 HttpPost 请求调用 WebService (转)

转自 https://www.cnblogs.com/Brambling/p/7266482.html 之前调用 WebService 都是直接添加服务引用,然后调用 WebService 方法的,最近发现还可以使用 Http 请求调用 WebService.这里还想说一句,还是 web api 的调用简单. WebService 服务端代码: public class WebServiceDemo : System.Web.Services.WebService { [WebMethod] p

Java发布webservice应用并发送SOAP请求调用

webservice框架有很多,比如axis.axis2.cxf.xFire等等,做服务端和做客户端都可行,个人感觉使用这些框架的好处是减少了对于接口信息的解析,最主要的是减少了对于传递于网络中XML的解析,代价是你不得不在你的框架中添加对于这些框架的依赖.个人观点是:服务端使用这些框架还行,如果做客户端,没必要使用这些框架,只需使用httpclient即可. 一.创建并发布一个简单的webservice应用 1.webservice 代码: import javax.jws.WebMethod

ajax跨域请求调用webservice接口

1.WebService 接口编写 步骤:新建web项目=>添加web service=>编写方法接口=>然后发布(本地测试可以直接把这个web service运行起来). 关键如何让外部Ajax 调用. 首先,配置WebService 项目配置文件(web.config)红色部分必须配置,这样第三方才能调用接口方法(经测试通过,直接粘贴就ok),不懂可以百度. <configuration> <system.web> <webServices> &l

.asmx支持post请求或者get请求调用(WebService &quot;因 URL 意外地以 结束,请求格式无法识别&quot; 的解决方法)

使用Post调用以asmx形式提供的webservice时,在本机调试没有调用问题.一旦部署至服务器后会提示如下信息: <html> <head> <title>因 URL 意外地以“/GetCertByToken”结束,请求格式无法识别.</title> <meta name="viewport" content="width=device-width" /> <style> body {fo

HttpURLConnection 直接发送soap消息调用webservice

package com.travelsky.test; import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.InetSocketAddress;import java.net.Proxy;import java.net.URL; public class Test {

【Java EE 学习第80天】【调用WebService服务的四种方式】

不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jdk命令wsimport生成调用源代码 package com.kdyzm.ws; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public class MyWsServer { public Strin

(转) c/c++调用libcurl库发送http请求的两种基本用法

libcurl主要提供了两种发送http请求的方式,分别是Easy interface方式和multi interface方式,前者是采用阻塞的方式发送单条数据,后者采用组合的方式可以一次性发送多条数据 一.Easy interface libcurl的easy interface是最基本的用法,简要流程为: 1.在主线程中调用curl_global_init(CURL_GLOBAL_ALL)初始化 2.调用curl_easy_init获取一个句柄: 3.调用curl_easy_setopt函数

Window Server IIS6.0部署webservice请求调用提示请求失败

在一台window server 2003机器上部署了一个webservice,iis为6.0,奇怪的是.在服务器本机调用webservice成功了,可是在其它client调用却反馈失败.详细什么原因呢? 经过摸索,最后发现是iis6.0的版本号过低,在iis7.0上没问题,在使用iis6.0时,须要在webservice的web.config中加入一段配置: <configuration> <system.web> <webServices> <protocol