C#WebService 客户端通过Http调用请求(转)
1.webservice帮助类
public class WebServiceHelper
{
public static string CallServiceByGet(string strURL)
{
//创建一个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();
Reader.Close();
strValue = strValue.Replace("<", "<");
strValue = strValue.Replace(">", ">");
return strValue;
}
public static string CallServiceByPost(string strURL,System.Collections.Specialized.StringDictionary parameters)
{
//创建一个HTTP请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
//Post请求方式
request.Method = "POST";
//内容类型
request.ContentType = "application/x-www-form-urlencoded";
//设置参数,并进行URL编码
StringBuilder codedString = new StringBuilder();
foreach (string key in parameters.Keys)
{
codedString.Append(HttpUtility.UrlEncode(key));
codedString.Append("=");
codedString.Append(HttpUtility.UrlEncode(parameters[key]));
codedString.Append("&");
}
string paraUrlCoded = codedString.Length == 0 ?
string.Empty:codedString.ToString().Substring(0, codedString.Length -
1);
//string paraUrlCoded = HttpUtility.UrlEncode("ProductId");
//paraUrlCoded += "=" + HttpUtility.UrlEncode(this.textBox1.Text);
byte[] payload;
//将URL编码后的字符串转化为字节
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
//设置请求的ContentLength
request.ContentLength = payload.Length;
//发送请求,获得请求流
Stream writer = request.GetRequestStream();
//将请求参数写入流
writer.Write(payload, 0, payload.Length);
//关闭请求流
writer.Close();
//获得响应流
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream s = response.GetResponseStream();
//转化为XML,自己进行处理
XmlTextReader Reader = new XmlTextReader(s);
Reader.MoveToContent();
string strValue = Reader.ReadInnerXml();
Reader.Close();
strValue = strValue.Replace("<", "<");
strValue = strValue.Replace(">", ">");
return strValue;
}
}
---------------------------------------------------------------------------------------------------------------
2.webservice方法
---------------------------------------------------------------------------------------------------------------
/// <summary>
/// Service1 的摘要说明
/// </summary>
[WebService(Namespace = "http://127.0.0.1/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld1()
{
return "Hello World";
}
[WebMethod]
public string HelloWorld2(string p1,string p2)
{
return string.Concat("Hello World", ",", p1, ",", p2);
}
[WebMethod]
public string HelloWorld3(string datetime)
{
return string.Concat("Hello World", " today is ", datetime);
}
}
---------------------------------------------------------------------------------------------------------------
3.使用webservice帮助类调用webservice方法
---------------------------------------------------------------------------------------------------------------
//带2个字符串参数的调用
string url = "http://localhost/ByDIF.WebService/Service.asmx/HelloWorld2";
StringDictionary parameters = new StringDictionary();
parameters.Add("p1","123");
parameters.Add("p2", "456");
string message = WebServiceHelper.CallServiceByPost(url,parameters);
System.Console.WriteLine(message);
//不带参数的调用
url = "http://localhost/ByDIF.WebService/Service.asmx/HelloWorld1";
parameters = new StringDictionary();
message = WebServiceHelper.CallServiceByPost(url, parameters);
System.Console.WriteLine(message);
//带一个日期字符串的调用
url = "http://localhost/ByDIF.WebService/Service.asmx/HelloWorld3";
parameters = new StringDictionary();
parameters.Add("datetime", System.DateTime.Now.ToShortDateString());
message = WebServiceHelper.CallServiceByPost(url, parameters);
System.Console.WriteLine(message);
System.Console.Read();
C#WebService 客户端通过Http调用请求(转)的更多相关文章
- 最简单易懂的webService客户端之soap+xml请求
代码准备: 1.网络上有提供一些免费的服务器测试地址,可以上这里找一找:https://my.oschina.net/CraneHe/blog/183471 2.我选择了一个翻译地址:http://w ...
- webservice客户端 get delete post 请求
package com.cn.eport.util.common; import java.io.IOException; import java.util.List; import org.apac ...
- WebService学习整理(一)——客户端三种调用方式整理
1 WebService基础 1.1 作用 1, WebService是两个系统的远程调用,使两个系统进行数据交互,如应用: 天气预报服务.银行ATM取款.使用邮箱账号登录各网站等. 2, ...
- java实现WebService 以及客户端不同的调用方式
java 实现WebService 以及不同的调用方式 webservice: 就是应用程序之间跨语言的调用 wwww.webxml.com.cn 1.xml 2. ws ...
- Atitit 动态调用webservice与客户端代理方式调用
Atitit 动态调用webservice与客户端代理方式调用 方式1: 使用call.invoke 直接调用WSDL,缺点:麻烦,不推荐--特别是JAVA调用.NET的WS时,会有不少的问题需要解 ...
- 调用webservice客户端方法 runtime modeler error: Wrapper class ××× is not found. Have you run APT to generate them?
用wsimport生成webservice的客户端以后,调用客户端生成方法时总是出现 runtime modeler error: Wrapper class stardand.nrcms.nckin ...
- 根据wsdl文件,Java工程自动生成webservice客户端调用
根据wsdl文件,Java工程自动生成webservice客户端调用 1,工具:带有webservice插件的myeclips 2,步骤: (1),新建一个Java工程:relationship (2 ...
- 根据wsdl文件,Web工程自动生成webservice客户端调用
根据wsdl文件,Web工程自动生成webservice客户端调用 1,工具:带有webservice插件的eclips 2,步骤: (1),新建一个Web工程:WSDLTest (2),浏览器访问W ...
- WebService学习总结(四)——调用第三方提供的webService服务
http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...
随机推荐
- 限制ITEM读取其它物料的物料描述
应用 Oracle Purchasing 层 Level Function 函数名 Funcgtion Name CUXPOXPOEPO 表单名 Form Name POXPOEPO 说明 Des ...
- Java pipeline
http://cullenprogramming.homelinux.com/PIPEuserguide.htm http://www.cise.ufl.edu/research/ParallelPa ...
- COB (Chip On Board) 製程介紹/簡介/注意事項 I
COB (Chip On Board)在電子製造業並不是一項新鮮的技術,但最近我卻常常被問到相關的問題及資料索取.也許真的是產品越來越小了,而較進階的技術又太貴,所以又有人回過頭來考慮COB的製程. ...
- Cortex-M3学习日志(三)-- 外部中断0
无论是哪款单片机应该都有对应的中断的功能,中断在嵌入式系统的地位毋庸置疑.LPC1768微处理器包括4个外部中断,分别是EINT0.EINT1.EINT2.EINT3对应的引脚分别是P2.10~P2. ...
- c# 多显示器设置主屏幕(Set primary screen for multiple monitors)
原文 http://www.cnblogs.com/coolkiss/archive/2013/09/18/3328854.html 经过google加各种百度,终于找到了一个有效的解决方案,下面是两 ...
- Android下pm 命令详解
Sam在看相关PackageManager代码时,无意中发现Android 下提供一个pm命令,通常放在/system/bin/下.这个命令与Package有关,且非常实用.所以研究之.0. Usag ...
- centos ldap
Standalone LDAP Daemon, slapd(standalone lightweight access protocol)Lightweight Directory Access Pr ...
- Java面试题之六
三十一.如何取小数点前两位,并四舍五入. package com.lovo; public class TestDot2 { // 方法1 public void test1(double c) { ...
- 算法导论——lec 10 图的基本算法及应用
搜索一个图是有序地沿着图的边訪问全部定点, 图的搜索算法能够使我们发现非常多图的结构信息, 图的搜索技术是图算法邻域的核心. 一. 图的两种计算机表示 1. 邻接表: 这样的方法表示稀疏图比較简洁紧凑 ...
- Android_按钮被按下效果的实现(selector选择器)
在很多刚入门的新手在开发实例的过程中,经常会遇到要按下某个ImageView时,需要加入确认感的时候.需要在按下的时候,控制ImageVIew内图片的显示. 在我是新手的时候,也这样做过.所以这里简单 ...