0

我正在从 C++ 调用网络方法。[webmthod] 定义如下

[WebMethod]
public string UploadFile(byte[] data)

这是我在 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 呢?

谢谢!

4

2 回答 2

1

我最终从 C++ 进行 HTTP UPLOAD ..

于 2009-04-09T21:03:48.013 回答
1

供将来参考:考虑使用 ATL Server。您可以在 www.codeplex.com/AtlServer(Microsoft 将 ATL Server 从最新的 ATL 9.0 SDK 中移除并将其移至 codeplex)和 MSDN 上找到最新信息和更多信息:msdn.microsoft.com/en-us/library/exb5b09w (VS.80).aspx

对于 C++,您可以生成一个代理头文件,该文件巧妙地包装了使用 ATL soap 调用 Web 方法所需的所有内容,以及您希望处理所有网络调用的任何 ATL Soap 客户端(WinInet、WinHTTP、Soap Socket 等)。要生成此文件,您可以使用 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 调用示例:msdn .microsoft.com/en-us/library/ftdya1d6(VS.80).aspx

于 2009-08-01T00:00:18.977 回答