Web services 从C++; < >我从C++调用WebMead方法。[webmthod]的定义如下 [WebMethod] public string UploadFile(byte[] data)

Web services 从C++; < >我从C++调用WebMead方法。[webmthod]的定义如下 [WebMethod] public string UploadFile(byte[] data),web-services,httprequest,wininet,Web Services,Httprequest,Wininet,下面是我在C中如何称呼它++ static TCHAR hdrs[] = "Content-Type: application/x-www-form-urlencoded"; static TCHAR frmdata[] = "data=temp.txt"; HINTERNET hSession = InternetOpen("MyAgent",INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); HINTERNET hConnect =

下面是我在C中如何称呼它++

 static TCHAR hdrs[] = "Content-Type: application/x-www-form-urlencoded";
     static TCHAR frmdata[] = "data=temp.txt";
  HINTERNET hSession = InternetOpen("MyAgent",INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
  HINTERNET hConnect = InternetConnect(hSession, "localhost",
      INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
  HINTERNET hRequest = HttpOpenRequest(hConnect, "POST", "my/WebService.asmx/UploadFile", NULL, NULL, 0, 0, 1);
  HttpSendRequest(hRequest, hdrs, strlen(hdrs), frmdata, strlen(frmdata));
有了这个,;我收到以下错误

System.ArgumentException:无法将temp.txt转换为System.Byte

那么,如何传入frmdata[],以便它可以转换为Web服务上的System.byte


谢谢

>我最后做了从C++上传的http。P>>P>为将来参考:考虑使用ATL服务器。您可以在www.codeplex.com/AtlServer(Microsoft从最新的ATL 9.0 SDK中取出ATL服务器并将其移动到codeplex)和MSDN:MSDN.Microsoft.com/en-us/library/exb5b09w(VS.80).aspx上找到最新的位和更多信息

<> P> C++,您可以生成代理头文件,它可以将所有需要使用ATL SOAP调用Web方法的所有文件和您希望的所有ATL SOAP客户端(WiNET、WiNHTP、SOAP套接字等)处理所有的网络调用。要生成此文件,可以使用sproxy.exe工具。然后web方法调用变成了一个简单的类方法调用

参考:msdn.microsoft.com/en-us/library/994721ak(VS.80).aspx Sproxy工具:msdn.microsoft.com/en us/library/ztta389h(VS.80).aspx WS-call示例:msdn.microsoft.com/en-us/library/ftdya1d6(VS.80).aspx