之前做了一个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. 九度OJ 1255:骰子点数概率 (递归、DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:316 解决:29 题目描述: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S.输入n,打印出S的所有可能的值出现的概率. 输入: 输入包 ...

  2. PHPUnit学习记录

    今天是2017-1-17号,昨晚收到邮件,被view code之后,基本全部需要重构,其实我写得php代码里面完全是东拼西凑的代码,自己都不知道什么意思,今天被要求学习PHPUnit了 ------- ...

  3. codeforces Gravity Flip 题解

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  4. Java从零开始 第一天

    java是一门优秀的编程语言.java也有很多优点.从零开始.这是第一天,不是为什么,而是让自己学的更多. 1.下载JDK 在浏览器输http://www.oracle.com/index.html. ...

  5. READ_TEXT

    [转自http://lz357502668.blog.163.com/blog/static/1649674320109119101907/]这里,定义ITAB内表来存储长文本,并放到内表ITAB_E ...

  6. 第2条:遵循PEP8风格指南

    <Python Enhancement Proposal #8>(8号Python增强提案)又叫PEP8,它是针对Python代码格式而编订的风格指南. 尽管可以在保证语法正确的前提下随意 ...

  7. 改善程序与设计的55个具体做法 day2

    条款05:了解C++默默编写并调用哪些函数 如果没有为类定义构造函数.析构函数.拷贝构造函数.重载赋值操作符,并且这些函数被需要(调用)时,编译器会为类生成默认的函数,而这些函数是public inl ...

  8. Chrome Extension 扩展程序 小白入门

    Chrome Extension 扩展程序 前请说明:本文适用于之前从来没有接触过chrome extension扩展程序的同学~ 编写demo 创建项目文件夹chrome_ext_demo,在项目根 ...

  9. Kattis - horrorfilmnight 【贪心】

    题意 有两个人想去一起看电影,然后分别给出两个人 分别喜欢看的电影都在哪些天 然后 同一个人 不能连续看两天他不喜欢的电影 求他们最多可以看多少次电影 思路 先将两人喜欢看的电影进行排序, ① 选择两 ...

  10. 【leetcode刷题笔记】Merge k Sorted Lists

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 题 ...