c调用phpwebservice
Ⅰ 怎么在c语言中用socket的方式调用webservice
可以实现,先connect
sockaddr_in server;
if (m_bSockConnected)
{
return TRUE;
}
server.sin_addr.s_addr = inet_addr(m_szHost);
server.sin_family = AF_INET;
server.sin_port = htons((UINT)m_nPort);
if(connect(m_socket, (struct sockaddr*)&server, sizeof(server)) == SOCKET_ERROR)
{
m_bSockConnected = FALSE;
m_nLastErrorNo = WSAGetLastError();
MessageBox(0, "请检网络和服务器", "网络连接好陵错误", 0);
return FALSE;
}
else
{
m_bSockConnected = TRUE;
}
int timeout=30;
setsockopt(m_socket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&timeout, sizeof(int));
然后再发送url
char requestHeader[1024]= {0};
char nBuf[36] = {0};
strcpy(requestHeader, "PUT ");
strcat(requestHeader, szUrl);
strcat(requestHeader, "&Content-Length=");
_ui64toa(contentLength + 8, nBuf,10); //额外加了传输完成头的长度是8 strlen(SEND_END_STRING)
strcat(requestHeader, nBuf);
strcat(requestHeader, "&FileCount=");
ltoa(fileCount,nBuf, 10);
strcat(requestHeader, nBuf);
strcat(requestHeader," HTTP/1.1\r\nContent-Length: ");
_ui64toa(contentLength + 8, nBuf, 10);
strcat(requestHeader,nBuf);
strcat(requestHeader,"\r\nHost: ");
strcat(requestHeader,m_szHost);
strcat(requestHeader,":");
itoa(m_nPort,nBuf,10);
strcat(requestHeader,nBuf);
strcat(requestHeader,"\r\nAccept: */*;\r\nAccept-Encoding: gzip,deflate\r\nKeep-Alive: 60000\r\nConnection: keep-alive\r\盯袜和凯盯n\r\n");
//MessageBox(0, requestHeader, "info", 0);
char * szUTF8 = NULL;
BOOL bRet = FALSE;
bRet = CCharTransLib::EncodeToUTF8(requestHeader,&szUTF8);
if (bRet)
{
if ( (int)strlen(szUTF8) != send(m_socket, szUTF8, strlen(szUTF8), 0))
{
m_nLastErrorNo = GetLastError();
bRet = FALSE;
}
if (szUTF8)
{
delete []szUTF8;
szUTF8 = NULL;
}
}
以上是从我工程里面摘的,可能有些变量楼主编译不过去,但基本思想就是这样的
Ⅱ 怎么调用webservice服务
写一个WINDOWS服务定期调用webservice中的方法。
1、先建一个WebService(ASP.NET Web 服务应用程序)
2、建这个WebService的虚拟目录
3、执行生成一个文件
{
C:\Program Files\Microsoft Visual Studio 8\VC>wsdl /language:C# /out:c:\myProxyClass.cs http://hostServer:88/ImportData.asmx?WSDL
这个工具(方法)是针对一个webservice生成一个能动态调用的类
language:C#-----C#语言输出
c:\myProxyClass.cs-----这个是生成的文件存在本地的文件名和路径
http://hostServer:88/ImportData.asmx-----是虚拟目录运行时的地址
}
4、创建一个windows服务程序(新建项目->左侧选windows->右侧选windows服务),然后把生成的文件引入到windows服务的程序中
5、写调用事件(BeginImportUFData)
6、完成后编译生成一下,这时就会在此windows服务程序的bin文件夹下生成一个exe文件(如:MyNewService.exe
)
7、按以下方式安装
安装:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe 绝对路径\MyNewService.exe
卸载:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -u 绝对路径\MyNewService.exe
例如:(用dos命令窗口执行)
安装:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe E:\chengxu\MyNewService\MyNewService\bin\Debug\MyNewService.exe
【然后显示:正在安装程序集,最后显示:“提交”阶段成功完成】
卸载:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -u E:\chengxu\MyNewService\MyNewService\bin\Debug\MyNewService.exe
【最后提示:卸载完成】
启动、停止服务是window操作,找到管理-->服务 操作
Ⅲ c++ 怎么调用webservice sproxy.exe
2. 生成存客户端存根程序和框架
wsdl2h -o xxx.h xxx.wsdl(-t D:/gsoap-2.7/枣旦尺gsoap/typemap.dat)
soapcpp2 -L -x -i xxx.h(-I D:/gsoap-2.7/gsoap/import)
3. 或直接自己编写xxx.h,并生成xxx.wsdl
//迟培gsoap ns service name: xxx
//gsoap ns service style: rpc
//gsoap ns service encoding: literal
//gsoap ns service location: ht//localhost:8080
//gsoap ns schema namespace: ht/localhost:8080/xxx.wsdl
int ns__add(int a, int b, int* result);
3. 客户端
1) 把如下凳高生成的文件添加到项目:
stdsoap2.h,stdsoap2.cpp,
soapH.h,soapC.cpp,soapStub.h,
soapxxxProxy.h,soapxxxProxy.cpp,xxxSoap.nsmap
wsock32.lib
2) 代理方式调用
#include "soapTestWebServiceProxy.h"
#include "Test www.hbbz08.com WebService.nsmap"
int main(int argc, char* argv[])
{
int result = 0;
TestWebServiceProxy proxy;
proxy.add(12, 23, &result);
} //w
4. 服务端
1) 把如下生成的文件添加到项目:
stdsoap2.h,stdsoap2.cpp,
soapH.h,soapC.cpp,soapStub.h,
soapxxxService.h,soapxxxService.cpp,xxxSoap.nsmap
wsock32.lib
2) 实现接口函数
int TestWebServiceService::add(int a, int b, int *result)
{
*result = a+b;
return SOAP_OK;
} /
3) 开启服务
#include "soapTestWebServiceService.h"
#include "TestWebService.nsmap"
int main(int argc, char* argv[])
{
TestWebServiceService service;
service.run(8080);
Ⅳ C/C++实现WebService服务提供JSON数据的接口
我先说下我的想法,不知道对不对,其实webservice这个东西说白了就是个String的东西,你接受到以后怎么解析json这个就看你自己的方法,调用webservice,别想那么多,就是获得一个字符串,找到字符串中标示位,取得后边的值。希望我的回答对你有帮助
Ⅳ php的webservice怎么用
Web Service为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行Web Service通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较简单,出现时间比较早,SOAP比较复杂,主要是一些需要稳定、健壮、安全并且复杂交互的时候使用。
PHP中集成了XML-RPC和SOAP两种协议的访问,都是集中在xmlrpc扩展当中。另外,在PHP的PEAR中,不管是隐乎姿PHP 4还是PHP 5,都已经默认集成了XML-RPC扩展,而且该扩展跟xmlrpc扩展无关,能够独立实现XML-RPC的协议交互,如果没有xmlrpc扩展,建议使用PEAR::XML-RPC扩展。
说的再多都是虚的,下面一个例子说明一切。
首先构造webservice 的顷穗服务端:
在服务端,我定义的函数是get( "helloworld" );//hello是传入的参数
<?php
/**
* 函数:提供给RPC客户端调用的函数
* 参数:
* $method 客户端需要调用的函数
* $params 客户端需要调用的函数的参数数组
* 返回:返回指定调用结果
*/
function rpc_server_func($method, $params) {
$parameter = $params[0];//传入的函数名称
$parameter1 = $params[1];//传入的参数
if ($parameter == "get")
{
$return = "This data by get method".$parameter1 ;
}
else
{
$return = "Not specify method or params";
}
return $return;
}
//产生一个XML-RPC的服务器端
$xmlrpc_server = xmlrpc_server_create();
//注册一个服务器端调用的方法rpc_server,实际指向的是rpc_server_func函数
xmlrpc_server_register_method($xmlrpc_server, "rpc_server", "rpc_server_func");
//接受客户端POST过来的XML数据
$request = $HTTP_RAW_POST_DATA;
//执行调用客户端的XML请求后获取执行结果
$xmlrpc_response = xmlrpc_server_call_method($xmlrpc_server, $request, null);
//把函数处理后的结果XML进行输出
header("Content-Type: text/xml");
echo $xmlrpc_response;
//销毁XML-RPC服务器端资源
xmlrpc_server_destroy($xmlrpc_server);
?>
用php来访问所定义的webservice的服务端。
<?php
/**
* 函数:提供给客户端进行连接XML-RPC服务器端的函数
* 参数:
* $host 需要连接的主机
* $port 连接主机的端口
* $rpc_server XML-RPC服务器端文灶绝件
* $request 封装的XML请求信息
* 返回:连接成功成功返回由服务器端返回的XML信息,失败返回false
*/
function write_file( $string )
{
$fp = fopen( "xml.log","w" );
fprintf( $fp, "%s\n", $string );
fclose( $fp );
}
function rpc_client_call($host, $port, $rpc_server, $request) {
//打开指定的服务器端
$fp = fsockopen($host, $port);
//echo $fp."<br>";
//构造需要进行通信的XML-RPC服务器端的查询POST请求信息
$query = "POST $rpc_server HTTP/1.1\r\nUser_Agent: XML-RPC Client\r\nHost: ".$host."\r\nContent-Type: text/xml\r\nContent-Length: ".strlen($request)."\r\n\r\n".$request."\r\n";
//echo $query."<br>";
//把构造好的HTTP协议发送给服务器,失败返回false
if (!fputs($fp, $query, strlen($query)))
{
$errstr = "Write error";
echo $errstr."<br>";
return false;
}
//获取从服务器端返回的所有信息,包括HTTP头和XML信息
$contents = "";
while (!feof($fp))
{
$contents .= fgets($fp);
}
//关闭连接资源后返回获取的内容
fclose($fp);
return $contents;
}
//构造连接RPC服务器端的信息
$host = "localhost";
$port = 80;
$rpc_server = "/phpserv.php";//注意 这里一定要有/,切忌。
//把需要发送的XML请求进行编码成XML,需要调用的方法是rpc_server,参数是get
$request = xmlrpc_encode_request("rpc_server", array( "get", "helloworld"));
//echo $request;
//调用rpc_client_call函数把所有请求发送给XML-RPC服务器端后获取信息
$response = rpc_client_call($host, $port, $rpc_server, $request);
write_file ( $response );
//echo "aaa".$response."xxx"."<br>";
//分析从服务器端返回的XML,去掉HTTP头信息,并且把XML转为PHP能识别的字符串
$split = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>";
//echo "split=".$split."<br>";
$xml = explode($split, $response);
$xml = $split . array_pop($xml);
$response = xmlrpc_decode($xml);
/*输出从RPC服务器端获取的信息*/
print_r($response);
?>
例子都有了,其他的就是照搬咯。
Ⅵ PHP怎么调用WEBSERVICE
php开盯稿磨启soap,具体的方法网上搜一下,然后
$client = new SoapClient("webservice提供的接口地址凯斗敬让");
这样可以么?
Ⅶ php 中 webservice 是如何使用的 调用别人的接口 参数是如何传递的
php调用web service还是非常简单的。下面用一个例子说明:
web service服务是查询QQ用户是否在线
使用php5开发客户端:
<?php
try {
//$client = new SoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));
$client = new SoapClient("webservices/qqOnlineWebService.asmx?wsdl");
var_mp($client->__getFunctions());
print("");
var_mp($client->__getTypes());
print("");
class qqCheckOnline{
var $qqCode = "10000";
};
$arrPara = array(new qqCheckOnline);
$arrResult = $client->__Call("qqCheckOnline",$arrPara);//$client->qqCheckOnline($arrPara);
echo $arrResult->qqCheckOnlineResult . "";
} catch (SOAPFault $e) {
print $e;
}
?>
代码确实很简单吧,创建SoapClient对象时,可以使用保存在本地WSDL文件,也可以使用远程的地址,后面的array数组里可以带上很多的参数,具体参数可以查php的SoapClient帮助,这里带的是字符集编码,如果调用方法的参数里有中文,一定要指定字符集编码,否则会出错。
调
用web service前可以先调用SoapClient的__geunctions()和__getTypes()方法看一下你要调用的
web service暴露的方法,参数和数据类型,需要注意的是传入的参数名一定要和soapclient里面定义的一致,否则参数是传不过去的。
需要使用SoapClient的__soapCall()或__call()方法,具体使用方法可以查php的帮助文档。如果参数要求是一个结构体,请用类代替,如上面的代码。
另外发现个问题,如果web service方法返回的是xml格式的字符串,php接收到以后会自己把数据内容解析出来,而不是xml字符串.
Ⅷ C#怎么调用php webservice
把PHP.ini文件拷贝到Windows目录绝首下,把正裤Soap的Dll文件php_soap.dll拷贝到System32目录下。重启并清数IIS。新建一个PHP文件。 1/* soap.php */ 2/* 连接的是C#实现的Webservice */ 3$client = new SoapClient( http://xx.xxx.xx.com/service.asmx?wsdl )..
Ⅸ 如何在C#中webservice调用方法总结
一、WebService在cs后台程序中的调用
A、通过命名空间和类名直接调用
示例:
WebService ws = new WebService();
string s = ws.HelloWorld();
B、通过添加WEB引用的方式调用,首先添加WEB引用,通过URL指向WEBSERVICE,
指定WEB引用名,假设为KK;
示例:
kk.WebService n = new kk.WebService();
string ss=n.HelloWorld();
二、WebService在前台页面的JS 调用方法
1、首先通过下面的方法把Webservice在前台引用进来
<asp:ScriptManager runat="server">
<Services>
<asp:ServiceReference Path="WebService.asmx" InlineScript="True" />
</Services>
</asp:ScriptManager>
2、然后就可以通过JS程序进行调用,示例如下:
<script type="text/jscript">
function a()
{
WebService.HelloWorld(onresult);
}
//这里的onresult是回调函数
function onresult(result)
{
alert(result);
}
function b()
{
WebService.add(1,2,onreturn)
}
function onreturn(result)
{
alert(result);
}
//下面的'context'是上下文,可以通过回到函数通过重载的方式获得;
function c()
{
WebService.div(1,1,onresultC,onerror,'context');
}
function onresultC(res,c)
{
alert(res);
alert(c);
}
//onerror是获得异常信息的回调函数,下面给出了获得异常信息的方法
function onerror(error)
{
var a="";
a=String.format("获取服务器端异常的具体类型:{0}\t\n获取详细的异常描述信息:{1}\t\n获取造成异常的:{2}\t\n获取服务器端异常的堆栈
跟踪信息:{3}\t\n获取一个布尔值,表示异常是否是由于网络连接超时造成的{4}",
error.get_exceptionType(),
error.get_message(),
error.get_statusCode(),
error.get_stackTrace(),
error.get_timedOut())
alert(a);
}
a();
b();
c();
</script>
----自写小例子---
web Service---:
[WebMethod]
public string HelloWorld() {
return "Hello World,wwg";
}
[WebMethod]
public int AddWwg(int a,int b)
{
return a + b;
}
exe---
using CallWebService.localhost; //因为自己没有定义命名空间
namespace CallWebService
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Service serviceWwg = new Service();
int i1 = Int32.Parse(txt1.Text.ToString());
int i2 = Int32.Parse(txt2.Text.ToString());
int iResult = serviceWwg.AddWwg(i1, i2);
lb1.Text = iResult.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
CallWebService.localhost.Service serviceWwg = new CallWebService.localhost.Service();
string strResult = serviceWwg.HelloWorld();
lb1.Text = strResult.ToString();
}
}
}