我从C ++调用web方法。 [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?
谢谢!
答案 0 :(得分:1)
我最终从C ++开始进行HTTP UPLOAD。
答案 1 :(得分: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和您希望处理所有网络调用的任何ATL Soap客户端(WinInet,WinHTTP,Soap Socket等)调用Web方法所需的所有内容。要生成此文件,您可以使用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