我有这个代码使用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>";
此致
答案 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()));
现在的错误是服务找不到请求,这是它所期望的参数。