2009-04-02 20 views
0

私はC++からwebmethodを呼び出しています。次のように[webmthod]が定義されている。ここC++からWebメソッドを呼び出す

[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に変換できるようにしますか?

ありがとうございます!今後の参考のために

答えて

1

私はC++からのHTTP UPLOADをやってしまった...

1

:ATLサーバーを使用することを検討してください。最新のビットと詳細な情報は、www.codeplex.com/AtlServer(最新のATL 9.0 SDKからATL Serverを引き出し、コードプレックスに移動したもの)、およびMSDN:msdn.microsoft.com/en-us/library/exb5b09wを参照してください。 (VS.80).aspx

C++の場合は、ATLソープと任意の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

関連する問題