2009-04-02 4 views
0

Я вызываю веб-метод из C++. [Webmthod] определяется следующим образомВызов веб-метода из C++

[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 [], чтобы его можно было преобразовать в System.byte на веб-сервисе?

Спасибо!

ответ

1

я в конечном итоге делает HTTP UPLOAD из C++ ..

1

Для дальнейшего использования: рассмотреть возможность использования ATL Server. Вы можете найти последние бит и более подробную информацию на www.codeplex.com/AtlServer (Microsoft вытащила ATL-сервер из последнего пакета ATL 9.0 SDK и переместила его в код), а MSDN: msdn.microsoft.com/en-us/library/exb5b09w (VS.80) .aspx

Для C++ вы можете создать заголовочный файл прокси, который аккуратно обертывает все, что вам нужно, чтобы вызвать веб-метод с использованием мыла ATL и любого клиента ATL Soap, который вы хотите (WinInet, WinHTTP, Soap Socket и т. Д.).), который обрабатывает все сетевые вызовы. Чтобы сгенерировать этот файл, вы можете использовать инструмент sproxy.exe. Затем вызов веб-метода становится простым вызовом метода класса.

Ссылка: 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