PHP&Java 调用C#的WCF
步骤一:用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的更多相关文章
- 用java调用.net的wcf其实还是很简单的
前些天和我们的一个邮件服务商对接,双方需要进行一些通讯,对方是java团队,而作为.net团队的我们,只能公布出去的是一个wcf的basicbinding,想不 到问题来了,对方不知道怎么去调用这 ...
- java调用.net asmx / wcf
一.先用asmx与wcf写二个.net web service: 1.1 asmx web服务:asmx-service.asmx.cs using System; using System.Coll ...
- JAVA调用WCF
Java环境下生成代理类的工具有很多,如wsdl2Java,wsimport 等.本文中使用的工具是wsimport. 1.wsdl2Java 生成命令实例: wsdl2Java -p package ...
- Web循环监控Java调用 / Java调用.net wcf接口
背景介紹 (Background Introduction) 目前有一些报表客户抱怨打不开 报表执行过程过长,5.8.10秒甚至更多 不能及时发现和掌握服务器web站点情况 用戶需求(User Req ...
- JAVA调用 keytool 生成keystore 和 cer 证书
keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体( ...
- java调用mysql服务做备份与恢复
首先添加mysql的bin到环境变量,这样可以简写部分命令,并且做到不依赖系统mysql的具体安装路径. 重启计算机可以让添加的环境变量在java代码中调用时生效.(cmd中生效但java中调用没有生 ...
- 存储过程详解与java调用(转)
存储过程的一些基本语法: --------------创建存储过程----------------- CREATE PROC [ EDURE ] procedure_name [ ; number ] ...
- c++ c# java 调用 c++ 写的dll
1. vs 中新建win32 dll 项目 testdll 添加实现文件 test.cpp #include "stdafx.h" #include <ios ...
- Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()
Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...
随机推荐
- win7 jdk1.7配置环境变量
1.安装目录,C:\Program Files\Java
- VC Q&A (原创)
Q1:External Dependencies有什么作用? A1:(网友答复:)External Dependencies是说你没有把这个文件加入到这个工程中,但是需要这个文件的支持.当然有时是 ...
- codeforces 660D D. Number of Parallelograms(计算几何)
题目链接: D. Number of Parallelograms time limit per test 4 seconds memory limit per test 256 megabytes ...
- Gym - 101673:B Craters (几何,求凸包)
题意:给定几个圆,求最短的围合,把这几个包围起来,而且到圆的距离都不小于10. 思路:把每个圆的半径+10,边等分5000份,然后求凸包即可. #include<bits/stdc++.h> ...
- 蓝桥杯训练 2n皇后问题
给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一列或同一条对角线上 ...
- C# Linq 取得两个列表的交集
我们经常会用到linq 来查询 一个数组中和另一个数组中相同的项, 这个时候就会用到IEqualityComparer接口. public class StudyInfoModel { pu ...
- 物联网项目开发必读 深度分析MQTT协议优缺点
物联网并不仅仅是一种网络,而是一个新的生态环境,它描述的本质是越来越多的使用物品通过网络连接在一起并可使用单个或者多个的终端设备对它们进行各种控制和使用—当然,工业上的物联网通常连接到的石鼓传感器或者 ...
- POJ3928(树状数组:统计数字出现个数)
Ping pong Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2641 Accepted: 978 Descript ...
- Scala学习——集合的使用和“_”的一些使用(中)
1.空格加_可以表示函数的原型 命令行代码: scala> def fun1(name:String){println(name)} fun1: (name: String)Unit scala ...
- 四 Vue学习 router学习
index.js: 按需加载组件: const login = r => require.ensure([], () => r(require('@/page/login')), 'log ...