之前做了一个VC++访问c#制作的WebService,没有问题,接着我又做了一个VC++访问php制作的WebService ,
结果老是出现Client错误。这个php WebService是用ZendStudio制作的,后来采用NUSoap做php的WebService就没问题。
以下为整个过程:
NUSoap WebService自作.
参考网址:http://blog.csdn.net/raining_peidx/archive/2009/07/27/4384600.aspx
1.php WebService 文件: nusoap_server3.php,以下为代码:


<?php
require_once("lib/nusoap.php");
function AddNumbers($NumberOne,$NumberTwo)
{
    return $NumberOne+$NumberTwo;
}
$soap = new soap_server;
 // 初始化对 WSDL 的支持
$soap->configureWSDL('AddNumbers');
// 注册服务
$soap->register('AddNumbers',
array("NumberOne"=>"xsd:int","NumberTwo"=>"xsd:int"),
array("retrun"=>"xsd:int")           
);
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$soap->service($HTTP_RAW_POST_DATA);
?> 

2.VC客户端制作,以下是控制台应用程序制作。


#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h> //先导入msxml4.dll,再导入mssoap30.dll
#import "msxml4.dll" 
#import "C:\Program Files\Common Files\MSSoap\Binaries\mssoap30.dll" \
    exclude("IStream", "IErrorInfo", "ISequentialStream", "_LARGE_INTEGER", \
    "_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
using namespace MSXML2;
using namespace MSSOAPLib30;  void Add(int No1,int No2) {
    //char *_itoa( int value, char *string, int radix );     char str1[10],str2[10];     itoa(No1,str1,10); itoa(No2,str2,10);     ISoapSerializerPtr Serializer;     ISoapReaderPtr Reader;     ISoapConnectorPtr Connector;         // Connect to the service.     Connector.CreateInstance(__uuidof(HttpConnector30));        Connector->Property["EndPointURL"] = "http://localhost/test/nusoap/nusoap_server3.php";  
    Connector->Connect();     
    //Connector->Property["SoapAction"] = "http://Fantasy/WebServiceDemo/AddNumbers";
    Connector->Property["SoapAction"] = "http://localhost/test/nusoap/nusoap_server3.php/AddNumbers";
    Connector->BeginMessage();           // Create the SoapSerializer object.     Serializer.CreateInstance(__uuidof(SoapSerializer30));     // Connect the serializer object to the input stream of the connector object.     Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));     // Build the SOAP Message.     Serializer->StartEnvelope("","","");     //这里可以添加SoapHeader验证代码:     /*     Serializer->StartHeader("");     Serializer->StartHeaderElement("MyHeader","http://Fantasy/WebServiceDemo/",0,"","NONE","");        Serializer->StartElement("UserName","","","");//填充参数2则出错。     Serializer->WriteString(_bstr_t(userName));     */     Serializer->StartBody("");        //Serializer->StartElement("AddNumbers"," http://localhost/test/soap/Server.php/","","");
    //Serializer->StartElement("AddNumbers","http://Fantasy/WebServiceDemo/","","");
    Serializer->StartElement("AddNumbers","","","");     //(第三个参数可有可无,若加上第二个参数出错!?)     Serializer->StartElement("NumberOne","","","");// NumberOne=     Serializer->WriteString((_bstr_t)str1);     Serializer->EndElement();           Serializer->StartElement("NumberTwo","","","");// NumberOne=      Serializer->WriteString((_bstr_t)str2);     Serializer->EndElement();     Serializer->EndElement();       //     Serializer->EndBody();     Serializer->EndEnvelope();     // Send the message to the XML Web service.        Connector->EndMessage();        // Read the response.      Reader.CreateInstance(__uuidof(SoapReader30));         // Connect the reader to the output stream of the connector object.       Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");         // Display the result.     printf("Answer = %s\n", (const char*)Reader->RpcResult->text);   } int main() {        CoInitialize(NULL);        Add(1211,21114);       CoUninitialize();     return 0; }

注意:此方法只对NUSOAP制作的WebService有效,对zendStudio制作的WebService无效。

vc++ 访问php webService的更多相关文章

  1. 访问公网WebService服务

    接下来,我们演示如何访问公网webservice服务. 我们以访问 http://www.webxml.com.cn/zh_cn/index.aspx 为例,主要演示手机号码归属地查询服务(使用说明书 ...

  2. 使用地址栏访问CXF Webservice写法

    /* * 通过url调用 * http://localhost:8080/EFP/webService/TestWebservice/testOut/arg0/liuyx */ http://loca ...

  3. 【转】java 访问.net webservice返回的数据集

    转自[转的也是转的][http://blog.csdn.net/fox123871/article/details/8637839] 1. 概述 很多正在开发或者打算开发XML Web Service ...

  4. vc访问ACCESS数据库

    在现代软件开发中,数据库技术被越来越广泛应用,很多项目都存在着大量的数据需要存储,通常都会采用数据库来存储这些数据.最初,数据库厂商推出一个新的数据库产品时,相应的,他会为程序员提供一套访问该数据库的 ...

  5. 关于JQuery Ajax 跨域 访问.net WebService

    关于这个 jQuery Ajax跨域访问 WebService 前天整了好几个小时没整明白 今天再看一下 结果突然就顿悟了 1.建一个空webApplication --添加--新建项--web服务( ...

  6. 【Spring Boot】构造、访问Restful Webservice与定时任务

    Spring Boot Guides Examples(1~3) 参考网址:https://spring.io/guides 创建一个RESTful Web Service 使用Eclipse 创建一 ...

  7. Android访问php webservice

    如果是PHP做的服务端,而我们要用android去访问,怎么办?当然可以用REST,但也可以用点笨的方法,比如可以让PHP的服务端返回JSON或XML数据,而Android端则可以用APACHE的ht ...

  8. VC++ 使用MSSOAP访问WebService天气服务(客户端开发)

    绪论 本文介绍使用VC++编程实现访问天气Web服务的简单实例(例子来源于网络). Web天气服务 http://www.webxml.com.cn/WebServices/WeatherWebSer ...

  9. 使用sproxy.exe访问基于soap的webservice

    使用vc访问基于soap的webservice有多种方法,其中有一种是使用atlsoap,关于这个可以搜索sproxy.exe文章,不在这介绍(主要是我的写作能力太差).我写这个日记主要是项记录访问w ...

随机推荐

  1. Brain Network (medium)(DFS)

    H - Brain Network (medium) Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d &am ...

  2. 关于Spring学习解析顺序

    最高接口BeanFactory开始解析,暂定为一级接口! 从上往下进行分析学习! 分析的Spring源码版本是:4.3.3

  3. NSTheard 详解

    一.什么是NSThread NSThread是基于线程使用,轻量级的多线程编程方法(相对GCD和NSOperation),一个NSThread对象代表一个线程, 需要手动管理线程的生命周期,处理线程同 ...

  4. mysql导出数据或结构

    导出整个数据库结构和数据 $ mysqldump -h localhost -uroot -p123456 database > dump.sql 导出单个数据表结构和数据 $ mysqldum ...

  5. 5.Django数据库配置

    Django默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver需要安装第三方的支持 配置Django数据库:\hello_django\hello ...

  6. CentOS iSCSI服务器搭建------Initiator篇

    服务器信息: [root@initiator ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@initiator ~]# un ...

  7. linux mount一个硬盘

    我们在使用linux的情况下,难免有时会需要增加一块硬盘,在windows下增加硬盘很简单,所有的操作都是有画面.linux下增加一块硬盘,并且让这块硬盘可以正常的使用,所有的操作都在字符命令行的方式 ...

  8. new的越界访问

    今天敲代码的时候发现了一个BUG和大家分享一下,希望大家下次不要犯和我一样的错误. 如果犯了和我一样的错,也能知道自己错在哪里!   <(^-^)> 函数如下:(斐波那契数列的实现) lo ...

  9. Spring Cloud之搭建动态Zuul网关路由转发

    传统方式将路由规则配置在配置文件中,如果路由规则发生了改变,需要重启服务器.这时候我们结合上节课内容整合SpringCloud Config分布式配置中心,实现动态路由规则. 将yml的内容粘贴到码云 ...

  10. 图解MFC基本框架(深入消息映射机制)

    首先,先看整体的消息流向图: 上图解释: 起点是消息循环,在winmain函数中(mfc中winmain函数是隐含的调用的,在app全局对象构造完后紧接着调用winmain函数),while循环中不断 ...