Asmx和LibCurl无效的webservice名称

时间:2014-05-13 12:32:03

标签: xml web-services curl soap asmx

我有这个代码使用lib curl来调用我的asmx webservice。它适用于我的HelloWorld服务。 asmx webservice是用Visual Studio 2012编写的。我试图创建一个宁静的接口,而不是SOAP。

int main()
{
    CURL *curl;
    CURLcode res;
    curl = curl_easy_init();
    if(curl) 
    {
        curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:14523/Services/Service.asmx/HelloWord");
        curl_easy_setopt(curl, CURLOPT_POST,1);
        std::string content="<request></request>";
        curl_easy_setopt (curl, CURLOPT_POSTFIELDS, content);
        curl_easy_setopt (curl, CURLOPT_POSTFIELDSIZE, strlen (content.c_str())); 
        /* Perform the request, res will get the return code */ 
        res = curl_easy_perform(curl);
}

Hello World Service。

    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }

其他网络服务。

    [WebMethod]
    public UpdateWorkFlowReply UpdateWorkFlow(UpdateWorkFlowRequest request)
    {
}

当我拨打第一个服务时,一切都很好。然后我换到这一行...

        curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:14523/Services/Service.asmx/UpdateWorkFlow");

这会导致错误。

UpdateWorkFlow web service method name is not valid.

事情是......它绝对肯定是正确的。

现在,它向我跳出来,可能是由于Web服务所期望的对象。服务本身确实有效,因为我已经使用SoapUI进行了测试。但是,soapUI提供了请求模板。

如何创建请求?只是一个xml字符串?

我改变了这条线,但我仍然收到同样的错误。 (???)UpdateWorkFlowRequest是可序列化的,允许空值。

std::string content="<?xml version='1.0' encoding='utf-8'?><UpdateWorkFlowRequest></UpdateWorkFlowRequest>";

此致

1 个答案:

答案 0 :(得分:0)

更新了WebService调用

[WebMethod]
public UpdateWorkFlowReply UpdateWorkFlow(string request)
{
}

请求更改为....

std::string content="request=<request></request>";

然后将内容设置为正常。

curl_easy_setopt (curl, CURLOPT_POSTFIELDS, content);
curl_easy_setopt (curl, CURLOPT_POSTFIELDSIZE, strlen (content.c_str())); 

现在的错误是服务找不到请求,这是它所期望的参数。