步骤一:用C#声明WCF

   [ServiceContract]
public interface IService1 {
[OperationContract]
void DoWork(); [OperationContract]
string GetData(); [OperationContract]
string GetData2(string msg); [OperationContract]
string GetData3(Order order); [OperationContract]
IList<Order> GetList();
} public class Service1 : IService1 {
public void DoWork() {
}
public string GetData() {
return DateTime.Now.ToString("成功:" + "yyyy-MM-dd");
}
public string GetData2(string msg) {
return DateTime.Now.ToString("成功:" + "yyyy-MM-dd 您输入的内容是:" + msg);
}
public string GetData3(Order order) {
return string.Format("成功:{0},OrderId:{1},Qty:{2}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), order.OrderId, order.Qty);
}
public IList<Order> GetList() {
IList<Order> orders = new List<Order>();
orders.Add(new Order { OrderId = "A001", Qty = });
orders.Add(new Order { OrderId = "A002", Qty = });
orders.Add(new Order { OrderId = "A003", Qty = });
return orders;
}
} public class Order {
public string OrderId { get; set; }
public int Qty { get; set; }
}

步骤二:用PHP调用:

1.PHT调用WCF无参数
<?php
$wcfURL = 'http://192.169.1.100:8090/FPosServer_xncs/r/Service1.svc?wsdl';
$wcfClient = new SoapClient ( $wcfURL );
$result1 = $wcfClient->GetData();
print_r ( $result1 );
?> 2.PHT调用WCF传递一个string参数
<?php
$wcfURL = 'http://192.169.1.100:8090/FPosServer_xncs/r/Service1.svc?wsdl';
$wcfClient = new SoapClient ( $wcfURL );
$args = array('msg' => '312');
$result1 = $wcfClient->GetData2($args);
print_r ( $result1 );
?> 3.PHT调用WCF传递一个对象参数
<?php
$wcfURL = 'http://192.169.1.100:8090/FPosServer_xncs/r/Service1.svc?wsdl';
$wcfClient = new SoapClient ( $wcfURL );
$param = array('OrderId'=>'A001','Qty'=>'1');
$result1=$wcfClient->GetData3(array('order'=>$param));
print_r ( $result1 );
?>

4.Java调用WCF

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

public static void main(String[] args) {
try { String method = "AddVip"; // AddVip
String uri = "http://192.168.18.50:8899/Yinger/YingerService?wsdl";
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>";
System.out.println(body); byte[] data = body.getBytes("UTF-8"); URL url = new URL(uri); System.out.println(uri); HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true); // 设置允许输出
conn.setConnectTimeout( * ); // 设置超时时间为5秒 conn.setReadTimeout( * ); // 设置请求方式
conn.setRequestMethod("POST");
// 设置请求体属性
conn.setRequestProperty("Content-Type", "text/xml;charset=utf-8");
conn.setRequestProperty("SOAPAction", "http://tempuri.org/IYingerService/" + method); // 发送请求的xml文件
OutputStream outputStream = conn.getOutputStream();
outputStream.write(data);
outputStream.flush();
outputStream.close(); int code = conn.getResponseCode();
System.out.println("code:" + code);
if (code == ) {
// 读取服务器返回的消息
InputStream in = conn.getInputStream();
StringBuffer sb = new StringBuffer();
byte[] buf = new byte[];
for (int n; (n = in.read(buf)) != -;) {
sb.append(new String(buf, , n, "utf-8"));
}
in.close();
conn.disconnect();
System.out.println(sb.toString());
}
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}

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

//使用BasicHttpBinding绑定
BasicHttpBinding myBinding = new BasicHttpBinding();
//使用Transport安全模式
myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
//客户端验证为None
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
//客户端验证为Basic
//myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
//客户端验证为Ntlm
//myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm; //客户端Endpoint地址,指向服务端Endpoint的地址
EndpointAddress ea = new
EndpointAddress("https://win2008/WcfIISHostService/Service1.svc/GetIdentity"); GetIdentityClient gc = new GetIdentityClient(myBinding, ea); //客户端为Basic时,客户端提供用户名和密码
//gc.ClientCredentials.UserName.UserName = "chnking";
//gc.ClientCredentials.UserName.Password = "jjz666"; //执行代理类Get方法
string result = gc.Get(WindowsIdentity.GetCurrent().Name);

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

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

string Auth=Convert.ToBase64String(bytes);

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

7.RestSharp 使用HttpBasicAuthenticator 调用Shopify

 var client = new RestClient("https://developmentsandriver.myshopify.com/")
{
Authenticator = new HttpBasicAuthenticator("8d654c3a8404fc954d6653b100acbxxx", "sss0836672c0c518764506bf2ed3fe82")
}; var request = new RestRequest()
{
Method = Method.GET,
Resource = "admin/products.json",
RequestFormat = DataFormat.Json,
};
var result = client.Execute(request);
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. C/C++语法知识点汇总

    *  静态局部变量,在不同函数中可以同名. 静态全局变量,在不同文件中可以同名. 静态函数,在不同文件中可以同名. *  普通全局变量和普通函数,在同一工程中不能同名. 在相链接的程序与库之间,可以同 ...

  2. WebP探索

    不同场景下WebP的使用方案总结:   App:Android4.0以上提供原生支持,其他版本使用官方提供的解析库(Android.iOS):   浏览器:JS能力检测,对支持 WebP 的用户输出 ...

  3. zabbix告警邮件美化

    为了更好的用户体验,我们需要尽量美化我们的输出内容,尽量做到整齐划一,让人看了会有很舒服的感觉, 这个好像和苹果的产品一样,给人一种美感让人感觉非常享受. 一般我们的zabbix告警邮件就是纯文字,建 ...

  4. 1087 All Roads Lead to Rome (30)(30 分)

    Indeed there are many different tourist routes from our city to Rome. You are supposed to find your ...

  5. [转]ECMAScript5 Object的新属性方法

    虽然说现在并不是所有的浏览器都已经支持ECMAScript5的新特性,但相比于ECMAScript4而言ECMAScript5被广大浏览器厂商广泛接受,目前主流的浏览器中只有低版本的IE不支持,其它都 ...

  6. this在方法赋值过程中无法保持(隐式丢失)

    在看<高级程序设计>(我的红宝书) P.183页时遇到下面一个问题 var name = "77"; var obj = { name: "88", ...

  7. WPF中数据绑定问题

    在数据库中字段不区分大小写,可以页面是区分的,一开始以为不区分,可我从数据库查出了数据在前台就是不显示想了半天才发现的. <sdk:DataGrid FrozenColumnCount =&qu ...

  8. C#Dos命令

    记下 打开IIs:按Win+R键,输入inetmgr ; 远程桌面:按Win+R键,输入mstsc; 启动服务:按Win+R键,输入inetmgr; 删除某服务:sc delete [ServerNa ...

  9. selenium 点击页面链接测试

    点击页面链接测试 http://www.51testing.com/html/21/n-862721.html 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口 ...

  10. Linux命令总结_sort排序命令

    1.sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件]       补充说明:sort可针对文本文件的内容,以行为单位 ...