步骤一:用C#声明WCF

  1. [ServiceContract]
  2. public interface IService1 {
  3. [OperationContract]
  4. void DoWork();
  5.  
  6. [OperationContract]
  7. string GetData();
  8.  
  9. [OperationContract]
  10. string GetData2(string msg);
  11.  
  12. [OperationContract]
  13. string GetData3(Order order);
  14.  
  15. [OperationContract]
  16. IList<Order> GetList();
  17. }
  18.  
  19. public class Service1 : IService1 {
  20. public void DoWork() {
  21. }
  22. public string GetData() {
  23. return DateTime.Now.ToString("成功:" + "yyyy-MM-dd");
  24. }
  25. public string GetData2(string msg) {
  26. return DateTime.Now.ToString("成功:" + "yyyy-MM-dd 您输入的内容是:" + msg);
  27. }
  28. public string GetData3(Order order) {
  29. return string.Format("成功:{0},OrderId:{1},Qty:{2}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), order.OrderId, order.Qty);
  30. }
  31. public IList<Order> GetList() {
  32. IList<Order> orders = new List<Order>();
  33. orders.Add(new Order { OrderId = "A001", Qty = });
  34. orders.Add(new Order { OrderId = "A002", Qty = });
  35. orders.Add(new Order { OrderId = "A003", Qty = });
  36. return orders;
  37. }
  38. }
  39.  
  40. public class Order {
  41. public string OrderId { get; set; }
  42. public int Qty { get; set; }
  43. }

步骤二:用PHP调用:

  1. 1.PHT调用WCF无参数
  2. <?php
  3. $wcfURL = 'http://192.169.1.100:8090/FPosServer_xncs/r/Service1.svc?wsdl';
  4. $wcfClient = new SoapClient ( $wcfURL );
  5. $result1 = $wcfClient->GetData();
  6. print_r ( $result1 );
  7. ?>
  8.  
  9. 2.PHT调用WCF传递一个string参数
  10. <?php
  11. $wcfURL = 'http://192.169.1.100:8090/FPosServer_xncs/r/Service1.svc?wsdl';
  12. $wcfClient = new SoapClient ( $wcfURL );
  13. $args = array('msg' => '312');
  14. $result1 = $wcfClient->GetData2($args);
  15. print_r ( $result1 );
  16. ?>
  17.  
  18. 3.PHT调用WCF传递一个对象参数
  19. <?php
  20. $wcfURL = 'http://192.169.1.100:8090/FPosServer_xncs/r/Service1.svc?wsdl';
  21. $wcfClient = new SoapClient ( $wcfURL );
  22. $param = array('OrderId'=>'A001','Qty'=>'1');
  23. $result1=$wcfClient->GetData3(array('order'=>$param));
  24. print_r ( $result1 );
  25. ?>

4.Java调用WCF

注意:如果请求的body有中文,一定要加body.getBytes("UTF-8")

  1. public static void main(String[] args) {
  2. try {
  3.  
  4. String method = "AddVip"; // AddVip
  5. String uri = "http://192.168.18.50:8899/Yinger/YingerService?wsdl";
  6. String body = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><AddVip xmlns=\"http://tempuri.org/\"><jsonData>{\"Vip\":\"1820000000\",\"VipFrom\":\"APP\",\"Recommend\":\"887061217\",\"ChannelId\":\"5010280001\",\"Name\":\"小花\",\"Phone\":\"182000000\",\"Sex\":\"2\",\"BirthDate\":\"1992-03-02\",\"Address\":\"广东省广州市番禺区\",\"Province\":\"广东省\",\"City\":\"广州市\",\"District\":\"番禺区\",\"Email\":\"86566@qq.com\",\"Level\":\"会员卡\",\"Password\":\"8888888\",\"MemberType\":\"会员\"}</jsonData><appKey>test</appKey><appSecret>123456</appSecret></AddVip></s:Body></s:Envelope>";
  7. System.out.println(body);
  8.  
  9. byte[] data = body.getBytes("UTF-8");
  10.  
  11. URL url = new URL(uri);
  12.  
  13. System.out.println(uri);
  14.  
  15. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  16. conn.setDoOutput(true); // 设置允许输出
  17. conn.setConnectTimeout( * ); // 设置超时时间为5秒
  18.  
  19. conn.setReadTimeout( * );
  20.  
  21. // 设置请求方式
  22. conn.setRequestMethod("POST");
  23. // 设置请求体属性
  24. conn.setRequestProperty("Content-Type", "text/xml;charset=utf-8");
  25. conn.setRequestProperty("SOAPAction", "http://tempuri.org/IYingerService/" + method);
  26.  
  27. // 发送请求的xml文件
  28. OutputStream outputStream = conn.getOutputStream();
  29. outputStream.write(data);
  30. outputStream.flush();
  31. outputStream.close();
  32.  
  33. int code = conn.getResponseCode();
  34. System.out.println("code:" + code);
  35. if (code == ) {
  36. // 读取服务器返回的消息
  37. InputStream in = conn.getInputStream();
  38. StringBuffer sb = new StringBuffer();
  39. byte[] buf = new byte[];
  40. for (int n; (n = in.read(buf)) != -;) {
  41. sb.append(new String(buf, , n, "utf-8"));
  42. }
  43. in.close();
  44. conn.disconnect();
  45. System.out.println(sb.toString());
  46. }
  47. } catch (Exception e) {
  48. System.out.println(e.getMessage());
  49. e.printStackTrace();
  50. }
  51. }

5.C#调用WCF,用windows身份认证,Clinent代码:

  1. //使用BasicHttpBinding绑定
  2. BasicHttpBinding myBinding = new BasicHttpBinding();
  3. //使用Transport安全模式
  4. myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
  5. //客户端验证为None
  6. myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
  7. //客户端验证为Basic
  8. //myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
  9. //客户端验证为Ntlm
  10. //myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
  11.  
  12. //客户端Endpoint地址,指向服务端Endpoint的地址
  13. EndpointAddress ea = new
  14. EndpointAddress("https://win2008/WcfIISHostService/Service1.svc/GetIdentity");
  15.  
  16. GetIdentityClient gc = new GetIdentityClient(myBinding, ea);
  17.  
  18. //客户端为Basic时,客户端提供用户名和密码
  19. //gc.ClientCredentials.UserName.UserName = "chnking";
  20. //gc.ClientCredentials.UserName.Password = "jjz666";
  21.  
  22. //执行代理类Get方法
  23. string result = gc.Get(WindowsIdentity.GetCurrent().Name);

6.HttpHelper调用WCF,用windows身份认证:

byte[] bytes = Encoding.Default.GetBytes(UserNo + ":" + Password);

string Auth=Convert.ToBase64String(bytes);

  1. string xml = "";
  2. HttpHelper http = new HttpHelper();
  3. HttpItem item = new HttpItem()
  4. {
  5. URL = "http://pidev.XXXX.com:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_F360&receiverParty=&receiverService=&interface=SI_DeliveryIn_Req&interfaceNamespace=urn:F3602SAP:DeliveryIn",//URL 必需项
  6. Method = "post",//URL 可选项 默认为Get
  7. IsToLower = false,//得到的HTML代码是否转成小写 可选项默认转小写
  8. Cookie = "",//字符串Cookie 可选项
  9. Referer = "",//来源URL 可选项
  10. Postdata = xml,//Post数据 可选项GET时不需要写
  11. Timeout = ,//连接超时时间 可选项默认为100000
  12. ReadWriteTimeout = ,//写入Post数据超时时间 可选项默认为30000
  13. UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统 可选项有默认值
  14. ContentType = "text/html",//返回类型 可选项有默认值
  15. Allowautoredirect = false,//是否根据301跳转 可选项
  16. };
  17.  
  18. //Authorization: Basic RjM2MFBJOmYzNjBhZG1pbjY2
  19. item.Header.Add("Authorization", "Basic RjM2MFBJOmYzNjBhZG1pbjY2"); //此处为base64加密, 明文:F360PI:f360admin66
  20.  
  21. //SOAPAction: "http://sap.com/xi/WebService/soap1.1"
  22. item.Header.Add("SOAPAction", "http://sap.com/xi/WebService/soap1.1");
  23.  
  24. HttpResult result = http.GetHtml(item);
  25. string html = result.Html;

7.RestSharp 使用HttpBasicAuthenticator 调用Shopify

  1. var client = new RestClient("https://developmentsandriver.myshopify.com/")
  2. {
  3. Authenticator = new HttpBasicAuthenticator("8d654c3a8404fc954d6653b100acbxxx", "sss0836672c0c518764506bf2ed3fe82")
  4. };
  5.  
  6. var request = new RestRequest()
  7. {
  8. Method = Method.GET,
  9. Resource = "admin/products.json",
  10. RequestFormat = DataFormat.Json,
  11. };
  12. var result = client.Execute(request);
  13. var count = result.Content;

PHP&Java 调用C#的WCF的更多相关文章

  1. 用java调用.net的wcf其实还是很简单的

      前些天和我们的一个邮件服务商对接,双方需要进行一些通讯,对方是java团队,而作为.net团队的我们,只能公布出去的是一个wcf的basicbinding,想不 到问题来了,对方不知道怎么去调用这 ...

  2. java调用.net asmx / wcf

    一.先用asmx与wcf写二个.net web service: 1.1 asmx web服务:asmx-service.asmx.cs using System; using System.Coll ...

  3. JAVA调用WCF

    Java环境下生成代理类的工具有很多,如wsdl2Java,wsimport 等.本文中使用的工具是wsimport. 1.wsdl2Java 生成命令实例: wsdl2Java -p package ...

  4. Web循环监控Java调用 / Java调用.net wcf接口

    背景介紹 (Background Introduction) 目前有一些报表客户抱怨打不开 报表执行过程过长,5.8.10秒甚至更多 不能及时发现和掌握服务器web站点情况 用戶需求(User Req ...

  5. JAVA调用 keytool 生成keystore 和 cer 证书

    keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体( ...

  6. java调用mysql服务做备份与恢复

    首先添加mysql的bin到环境变量,这样可以简写部分命令,并且做到不依赖系统mysql的具体安装路径. 重启计算机可以让添加的环境变量在java代码中调用时生效.(cmd中生效但java中调用没有生 ...

  7. 存储过程详解与java调用(转)

    存储过程的一些基本语法: --------------创建存储过程----------------- CREATE PROC [ EDURE ] procedure_name [ ; number ] ...

  8. c++ c# java 调用 c++ 写的dll

    1. vs 中新建win32 dll 项目   testdll 添加实现文件       test.cpp #include "stdafx.h" #include <ios ...

  9. Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()

    Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...

随机推荐

  1. unity3d mvvm c#

    using UnityEngine; using System.Collections; public interface IState { void BeforEnter(); void Befor ...

  2. HBASE---shangxueT

  3. Django 发送email配置详解及各种错误类型

    跟随Django Book的内容发送邮件不成功,总结一下需要配置好settings.py文件,还要注意一些细节. 1.在settings文件最后添加以下内容,缺一不可! EMAIL_HOST= 'sm ...

  4. Node初学者入门,一本全面的NodeJS教程

    作者: Manuel Kiessling  翻译: goddyzhao & GrayZhang & MondayChen 关于 本书致力于教会你如何用Node.js来开发应用,过程中会 ...

  5. poj3468区间加减查找——树状数组区间修改查询

    题目:http://poj.org/problem?id=3468 增加一个更改量数组,施以差值用法则区间修改变为单位置修改: 利用公式可通过树状数组维护两个数组:f与g而直接求出区间和. 代码如下: ...

  6. wpf如何获取control template里的元素

    wpf中的控件模板里的元素有自己独立的命名域. 因此不能通过FindName来根据x:Name来查找子节点. 自己写了一个方法, 通过可视树遍历子节点,然后匹配名字. 如下: private stat ...

  7. Docker入门(二):安装/卸载

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  8. 使用API修改控制台输出的颜色(前景色和背景色)

    1.api原型 SetConsoleTextAttribute BOOL WINAPI SetConsoleTextAttribute( _In_ HANDLE hConsoleOutput, // ...

  9. 2014 ACM广东省赛总结

    2014年广东省赛在化工大学城开,5月10日开幕式&热身赛,5月11日正式赛. 热身赛的时候,开幕式说有两小时,于是我们愉快的切题了,像平常组队赛那样很快出了两题,但卡在后面两题切不动了.这时 ...

  10. 反射学习:(System.Reflection)

    反射为了动态(运行时动态) 原理:读取metadata(?)   Assembly assembly = Assembly.Load("TestReflections");//反射 ...