Вызов веб-метода из C ++ - PullRequest
       48

Вызов веб-метода из C ++

0 голосов
/ 02 апреля 2009

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 01 августа 2009

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

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

Ссылка: msdn.microsoft.com/en-us/library/994721ak(VS.80).aspx Sproxy Tool: msdn.microsoft.com/en-us/library/ztta389h(VS.80).aspx Пример вызова WS: msdn.microsoft.com/en-us/library/ftdya1d6(VS.80).aspx

1 голос
/ 10 апреля 2009

Я закончил загрузкой HTTP с C ++ ..

...