ps:使用过webservice的童鞋大概都明白它是基于Soap协议交换数据的,同时Soap协议是对HTTP协议的扩展,其实我们就可以认为调用一个WEB服务就是通过http协议GET或POST数据的过程,只不过中间的输入/输出数据是遵守Soap协议格式的标准XML。明白这个道理之后我们就可以通过构造请求数据来模拟调用WEB服务的过程了,具体代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Encoding encoding = Encoding.UTF8;
string responseData = String.Empty; WebRequest request = HttpWebRequest.Create("http://localhost:32100/Service1.svc");
string param = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\" xmlns:wcf=\"http://schemas.datacontract.org/2004/07/WcfService2\">"
+" <soapenv:Header/>"
+" <soapenv:Body>"
+" <tem:GetDataUsingDataContract>"
+" <!--Optional:-->"
+" <tem:composite>"
+" <!--Optional:-->"
+" <wcf:BoolValue>true</wcf:BoolValue>"
+" <!--Optional:-->"
+" <wcf:StringValue>ddd</wcf:StringValue>"
+" </tem:composite>"
+" </tem:GetDataUsingDataContract>"
+" </soapenv:Body>"
+"</soapenv:Envelope>";
byte[] bs = System.Text.ASCIIEncoding.ASCII.GetBytes(param); request.Method = "POST";
request.ContentType = "text/xml;charset=UTF-8";
request.ContentLength = bs.Length; //指定要调用http://localhost:32100/Service1.svc服务中的GetDataUsingDataContract方法
//http://tempuri.org/IService1/GetDataUsingDataContract(名称空间(http://tempuri.org/)/接口名称(IService1)/方法名(GetDataUsingDataContract))
request.Headers["SOAPAction"] = "http://tempuri.org/IService1/GetDataUsingDataContract"; using(Stream reqStream = request.GetRequestStream())
{
reqStream.Write(bs, , bs.Length);
reqStream.Close();
} using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
{
responseData = reader.ReadToEnd().ToString();
}
Console.Write(responseData);
Console.ReadKey();
} }
}
}

当然,上面的例子完全是对请求数据进行硬编码,实际使用还得根据实际情况调整和封装。下图是调用后的结果,就是一堆符合SOAP格式的XML,至于怎么解析我就不说了。

这里还有一点要提一下的是如何抓取WEBService的请求信息,我是通过SoapUI这个工具来获取的。(没使用过SoapUI???请教度娘吧。。。)

编写此文的目的:JAVA开发的WebService通过.NET来调用时经常会出现一些莫名其妙的问题(两者标准不一样,不兼容)折腾很久得不到解决,所以只能出此下策了。

直接代码POST数据调用WebService的更多相关文章

  1. 利用JavaScriptSOAPClient直接调用webService --完整的前后台配置与调用示例

    JavaScriptSoapClient下载地址:https://archive.codeplex.com/?p=javascriptsoapclient JavaScriptSoapClient的D ...

  2. 网摘Android调用WebService

    这边特别注意调用的.net WCF 接口的绑定方式.以前一直用的wxHttpbinding,一直连不上.改成BasicHTTPbinding就能连上了 上篇文章已经对Web Service及其相关知识 ...

  3. ASP.NET定时调用WebService 运行后台代码

    效果: 通过在网站的Global.asax的Application_Start方法中 加入定时器 定时调用WebService 该WebService的一个方法 负责在后台 向数据库的某个表加入数据 ...

  4. ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段

    ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...

  5. ASP.net jQuery调用webservice返回json数据的一些问题

    之前寒假时,试着使用jQuery写了几个异步请求demo, 但是那样是使用的webform普通页面,一般应该是用 webservice 居多. 最近写后台管理时,想用异步来实现一些信息的展示和修改, ...

  6. jQuery调用WebService返回JSON数据

    相信大家都比较了解JSON格式的数据对于ajax的方便,不了解的可以从网上找一下这方面的资料来看一下,这里就不多说了,不清楚的可以在网上查一下,这里只说一下因为参数设置不当引起的取不到返回值的问题. ...

  7. 股票数据调用示例代码php

    <!--?php // +---------------------------------------------------------------------- // | JuhePHP ...

  8. 用JDK自带的工具生成客户端调用Webservice的代码

    JAVA下客户端调用Webservice代码简直是让人心生畏惧,今日尝试,做记录如下,参考网上的众多解决方案,下面这种方式是比较简单的. 在jdk的bin目录下有一个wsimport.exe的工具,使 ...

  9. axis1客户端调用webservice的通用代码

    1.axis1 作为web service 客户端时,调用web service 服务端的通用代码 String url = "http://www.webxml.com.cn/webser ...

随机推荐

  1. Java浮点数float,bigdecimal和double精确计算的精度误差问题总结

    (转)Java浮点数float,bigdecimal和double精确计算的精度误差问题总结 1.float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结 ...

  2. ABAP POPUP函数

    POPUP_TO_CONFIRM_LOSS_OF_DATA 弹出一个对话框告知用户有可能丢失数据,询问是否操作继续.POPUP_TO_CONFIRM_STEP 弹出一个对话框询问用户是否操作继续. P ...

  3. chartjs执行图表

    <html> <head> <title></title> </head> <body> <div style='widt ...

  4. TCP3次握手和4次挥手

    为什么握手是3次,挥手是4次? 因为握手的时候,ACK+SYN可以一起发送,而4次挥手是Server端发送对Client的FIN的ACK后不一定会立即断开连接,需要将ACK和FIN分开发送 为什么TI ...

  5. xcode5.1+osx.10.9编译x264的问题

    最近忙于编译x264开源框架进行视频编码,百度了很多方法没有实现.很多方法都过时了.根本不能成功.因为在xcode5以后,编译器不在默认为gcc,而是Apple自带的clang编译器.本人试了很多方法 ...

  6. 日期对象-Date

    新建日期对象  var date = new Date(); getTime()         从 1970年 1月 1日开始计算到 Date 对象中的时间之间的毫秒数. getFullYear() ...

  7. Windows下解压版mysql的安装方法

    1 首先下载mysql的解压版的rar安装包 1 将安装包解压到安装路径.C:\Program Files (x86)\MySQL2 将安装路径下的bin追加到环境变量"PATH" ...

  8. SEO是企业发展的永恒主题

    最近接触很多客户问同一个问题,明明自己的网站花的时间很多,界面设计的很美,该考虑到的优化都考虑了,反而我那么优秀的网站却不如一个自己行业里的一个垃圾网站排名高,我没排名而对方的排名却很高?我每天坚持更 ...

  9. Linux中仅主机模式下设ip

    昨天在项目中接触到了Hadoop,需要用到linux来操作,以前有过接触,大致都忘了,在装备虚拟机的时候,遇到的IP  ping不通的问题,模式是仅主机模式,今天分享一下,以便自己以后再遇到,也可以迎 ...

  10. home键通知

    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("closeAlert"), n ...