0

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に変換できるようにするにはどうすればよいですか?

ありがとう!

4

2 に答える 2

1

今後の参考のために、ATL サーバーの使用を検討してください。www.codeplex.com/AtlServer (Microsoft は最新の ATL 9.0 SDK から ATL Server を取り出して codeplex に移動しました) および MSDN: msdn.microsoft.com/en-us/library/exb5b09w で最新情報と詳細情報を見つけることができます。 (VS.80).aspx

C++ の場合、すべてのネットワーク呼び出しを処理する ATL ソープと任意の ATL ソープ クライアント (WinInet、WinHTTP、ソープ ソケットなど) を使用して 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

于 2009-08-01T00:00:18.977 に答える