之前做了一个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. 手机测试常见的BUG解析

    今天总结之前学习到关于在手机软件测试过程中经常出现的一些现象,这些现象都是什么原因导致的,我们应该如何去抓取LOG,抓取的LOG的路径在哪里 下边我们来看 1. 手机遇到   “应用无响应” 有两个原 ...

  2. 【问题解决】Tomcat 启动时闪退或提示“Neither the JAVA_HOME or the JRE_HOME environmental variable is defined.”

    问题解决思路: 1.分析startup.bat启动脚本:发现其调用了catalina.bat,而catalina.bat调用了setclasspath.bat 2.在setclasspath.bat的 ...

  3. ORACLE client 11g r2 客户端开发环境配置

    一.安装ORACLE客户端,这里不做说明.需要注意的是,客户端解压位置应该在磁盘根目录下. 如果放在带中文字或者空格的文件名的路径下出了问题,可以放到磁盘根目录在安装.应该就会没有问题. 另外,一般安 ...

  4. 3.二级接口HierarchicalBeanFactory

    HierarchicalBeanFactory   字面意思是分层工厂, 那么这个工厂是怎么分层的呢? package org.springframework.beans.factory; //分层工 ...

  5. Delphi的未来,一点浅见

    我是新手评议谈不上,但个人认为必须得跟主流大佬走,这同时也得有自己的核心技术,才最终能让自己成为大佬. ------------------------------------------------ ...

  6. dos与unix文件格式之间的转换

    1. VI编辑器中转换 在VI中使用命令 set ff?(fileformat)可以查看文件的格式,使用set ff=dos(unix)可以设置文件的格式 2.使用sed处理(来至http://www ...

  7. LeetCode:范围求和||【598】

    LeetCode:范围求和||[598] 题目描述 给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作. 操作用二维数组表示,其中的每个操作用一个含有两个正整数 a ...

  8. mutation与action

    mutation 作用: 更改state的状态 说明: 每个mutation对象都有字符串类型(type)与回调函数,在回调函数内进行状态修改,回调函数的第一个参数为state eg: mutatio ...

  9. java深入探究07-jdbc下

    1.BeanUtils组件 1)使用:导入commons-beanutils-1.8.3.jar核心包,日志支持包: commons-logging-1.1.3.jar 缺少日志的jar文件报错:ja ...

  10. 分享知识-快乐自己:Maven 无法加载 Oracle 数据库驱动源

    由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库. 手动添加到本地仓库需要本地有 ...