- From: Rafael Llarena <rafallg@ono.com>
- Date: Mon, 28 Feb 2005 18:01:03 +0100
- To: www-ws@w3.org
Hi,
I’m developping a web service in C# and a client in eVC++ (for a Pocket
PC). My problem is in the web service. I use PocketSoap to create a SOAP
request in the client and send it to the web service. When the request
arrives at the WS the correct method execution begins, but whatever
parameter I send it always arrives as null (or 0 if it’s an integer).
But I’ve monitored traffic and examined the SOAP packet contents and
they seem to be correct (the correct parameter’s value is there). So I
don’t understand why, sending a correct SOAP packet to the correct web
service method, it always executes with null parameters. When I try with
the test form (via HTTP POST) it does work
Here’s the code
WEB SERVICE
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
namespace WebService1
{
/// <summary>
/// Descripción breve de Service1.
/// </summary>
[WebService(Namespace="http://tempuri.org/test1/Service1")]
public class Service1 : System.Web.Services.WebService
{
public Service1()
{
//CODEGEN: llamada necesaria para el Diseñador de servicios Web ASP .NET
InitializeComponent();
}
[WebMethod]
public string testMethod(int param)
{
string s = "Result " + param;
return s;
}
}
}
CLIENT (eVC++)
BOOL callWebService()
{
CComVariant resVal ;
CComPtr<ISOAPNode> prm ;
CComPtr<IHTTPTransportAdv> pt ;
CComBSTR req ;
CComPtr<ISOAPNodes> params ;
CComPtr<ISOAPEnvelope> penv ;
HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED );
int x = 5;
_HR( CoCreateInstance(__uuidof(CoEnvelope), NULL, CLSCTX_INPROC,
__uuidof(ISOAPEnvelope),(void **)&penv ) );
_HR( penv->put_MethodName ( CComBSTR(OLESTR("testMethod")) ) );
_HR( penv->put_URI (
CComBSTR(OLESTR("http://tempuri.org/test1/Service1/")) ) );
_HR( penv->get_Parameters(¶ms) );
_HR( params->Create ( CComBSTR(OLESTR("param")), CComVariant(x), NULL,
NULL, NULL, NULL ) ) ;
_HR( penv->Serialize(&req) );
_HR( pt.CoCreateInstance( __uuidof(HTTPTransport) ) );
_HR( pt->put_SOAPAction(
CComBSTR(OLESTR("http://tempuri.org/testMethod"))) );
_HR( pt->Send (
CComBSTR(OLESTR("http://host:port/test1/Service1.asmx")), req ) );
req.Empty() ;
_HR( penv->Parse(CComVariant(pt), NULL) ) ;
params.Release() ;
_HR( penv->get_Parameters(¶ms) ) ;
_HR( params->get_Item(0, &prm) ) ;
_HR( prm->get_Value(&resVal) ) ;
resVal.ChangeType(VT_BSTR) ;
AfxMessageBox(CString (resVal.bstrVal),MB_OK);
}
Received on Monday, 28 February 2005 19:52:49 UTC