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") ...
随机推荐
- linux安装与卸载软件
在ubuntu系统中,通常使用apt-get命令完成对软件的安装与卸载 安装的软件通常都放置在一些源中,国内有很多镜像源供下载使用,而系统设置的源保存在目录/etc/apt/sources.list文 ...
- CodeForces - 1000E :We Need More Bosses(无向图缩点+树的直径)
Your friend is developing a computer game. He has already decided how the game world should look lik ...
- P1880 [NOI1995]石子合并[区间dp+四边形不等式优化]
P1880 [NOI1995]石子合并 丢个地址就跑(关于四边形不等式复杂度是n方的证明) 嗯所以这题利用决策的单调性来减少k断点的枚举次数.具体看lyd书.这部分很生疏,但是我还是选择先不管了. # ...
- 【QT】《转载》常用快捷键
F1 查看帮助F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2 声明和定义之间切换F4 头文件和源文件之间切换Ctrl+1 ...
- uC/OS-II源码分析(四)
内核结构 1, 临界区,OS_ENTER_CRITICAL和OS_EXIT_CRITICAL 为了处理临界区代码,必须关中断,等处理完毕后,再开中断.关中断可以避免其他任务或中断进入临界区代码.uC ...
- 10 Vue 学习 shortList页面
1: shortList页面代码如下: <template> <div class="fillcontain"> <head-top></ ...
- SeetaFace教程(一) 在 VS 中的编译安装和环境配置
SeetaFace开源库由FaceDetection.FaceAlignment.FaceIdentification三部分组成.FaceDetection是在一副图片中检测出人脸区域,以一个方形区域 ...
- jq操作select集合
jq操作select集合 时间:2012年12月07日分类:Javascript 最近一段时间发现,老是要跟select,option相关的东西打交道,而且有的时候还会搞错,于是,抽了一点时间整理了一 ...
- [翻译]Nativescript 中 Web 视图与 Android/IOS 的双向通信
English document From http://shripalsoni.com/blog/nativescript-webview-native-bi-directional-communi ...
- 从扫码支付想到的超级APP主宰一切,数据!数据!还是数据!
前言 做室内定位的人其实内心都明白:基于指纹方法的移动端定位,无论paper每年出来多少,距离真正的大规模应用的距离还有多么遥远.指纹采集,指纹更新,似乎在生产实践上就是不可能的难题.所有还在基于人工 ...