HTTP-аутентификация и отправка файлов в C - PullRequest
1 голос
/ 20 апреля 2010

У меня есть некоторые проанализированные данные в двух файлах. Мне нужно отправить их на веб-сервер веб-сайта. Я также должен войти в систему на веб-сервере в первую очередь. я новичок в этой вещи веб-взаимодействия. Мне просто нужно знать, как я могу это сделать. я изучаю библиотеку libcurl, так что я думаю, что она может отправлять стандартные сообщения HTTP POST. Я сделаю простой веб-сервер, чтобы проверить это сам. Может кто-нибудь сказать мне, какое взаимодействие необходимо. под этим я подразумеваю, как я могу отправить информацию об имени пользователя и пароле, знать, что я вошел в систему, а затем отправить файлы. может быть, некоторые примеры постов в форме, которые, я полагаю, это то, чем я сейчас буду заниматься.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2010

Можно использовать, например, старый Wininet.dll (http://msdn.microsoft.com/en-us/library/aa385473%28VS.85%29.aspx) или более поздний Winhttp.dll на стороне клиента. Последний (WinHTTP) имеет два C / C ++ API и интерфейс COM. WinHTTP у вас есть больше вариантов аутентификации (http://msdn.microsoft.com/en-us/library/aa383144%28VS.85%29.aspx).

С другой стороны, старый Wininet.dll имеет функцию, подобную InternetWriteFile. В InternetConnect (Wininet.dll) вы можете указать lpszUsername и lpszPassword.

В WinHTTP вы должны использовать WinHttpSetOption и WinHttpSetCredentials, чтобы указать имя пользователя и пароль.

Найдите и Wininet, и WinHTTP, и вы найдете достаточно информации, чтобы решить, какая из них лучше для ваших требований.

0 голосов
/ 20 апреля 2010

В зависимости от типа выполняемой аутентификации библиотека libcurl может иметь встроенную функциональность для поддержки того, что вы пытаетесь сделать. Проверьте функцию curl_easy_setopt - в частности, раздел, посвященный аутентификации.

Для базовой аутентификации вы можете сделать следующее.

curl_easy_setopt( curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );
curl_easy_setopt( curl, CURLOPT_USERPWD, "username:password" );
...