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") ...
随机推荐
- [转]从onload和DOMContentLoaded谈起
这篇文章是对这一两年内几篇dom ready文章的汇总(文章的最后会标注参考文章),因为浏览器进化的关系,可能他们现在的行为与本文所谈到的一些行为不相符.我也并没有一一去验证,所以本文仅供参考,在具体 ...
- Python操作MySQL数据库9个实用实例
用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-pytho ...
- Vijos1132:求二叉树的先序序列
描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度≤8). 格式 输入格式 第一行为二叉树的中序序列第二行为二叉树的后序序列 输出格式 一行,为二叉树的先序 ...
- 五 Vue学习 首页学习 (上)
首页: http://localhost:8002/#/, 登录页面如下: index.js文件中如下的路由配置,转过去看login.vue是如何实现的. const routes = [ { ...
- complexType
//decltype的表达式如果是加上括号的变量,结果将是引用 decltype((variable)) ruiy; //此变量的数据类型是引用(但此处变量的申明语句是错误的,引用不是对象,指向的对象 ...
- Oracle 11g R2安装手册(…
1.Oracle 11g R2安装手册(图文教程)For Windows 1.下载Oracle 11g R2 for Windows版本,下载地址如下官方网站:http://download.orac ...
- VNC协议分析
VNC协议分析 摘自: http://blog.csdn.net/forever_feng/article/details/4703088 简介 VNC(Virtual Network Computi ...
- 使用BIND安装智能DNS服务器(一)---基本的主从DNS服务器搭建
参考网址:http://www.unixmen.com/dns-server-installation-step-by-step-using-centos-6-3/ DNS(Domain Name S ...
- 第二课2、ROS
1.ROS框架 分为以下三个级别: 1)文件系统级 2)计算图级 计算图级是ROS处理数据的一种点对点的网络形式,描述程序是如何运行的. 基本的计算图级概念包括:节点,参数服务器,消息,服务,主题和包 ...
- # program once 用途 及与 ifndef使用异同
在头文件中用这种写法就是为了该头文件被重复包含时不会出现符合重定义的错误. 效果等同于 #ifndef __xxx__ #define __xxx__ ... #endi ...