У меня проблема с отправкой запроса POST из C # в скрипт PHP на моем сервере Apache (Windows). Все работает нормально, если только я не проинструктирую Apache требовать действительного пользователя, использующего BASIC-аутентификацию через файл .htaccess
.
Но давайте наведем порядок. Я использую следующий код для отправки списка пар ключ / значение в мой PHP-скрипт с использованием HTTP-POST:
NameValueCollection nameValues = new NameValueCollection();
nameValues["operation"] = ...;
nameValues["order"] = ...;
nameValues["status"] = ...;
nameValues["comment"] = ...;
nameValues["user"] = ...;
WebClient webClient = new WebClient();
try
{
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri(PERFORM_URL), "Basic", new NetworkCredential(PERFORM_USER, PERFORM_PASSWORD));
webClient.Credentials = credentialCache;
byte[] response = webClient.UploadValues(PERFORM_URL, "POST", nameValues);
string responseString = Encoding.ASCII.GetString(response);
}
finally
{
webClient.Dispose();
}
PHP-скрипт на сервере выглядит так:
<?php
print_r($_SERVER);
?>
Так что я просто выведу некоторую информацию заголовка здесь. Я отключаю базовую аутентификацию в моем файле htaccess
, все в порядке. Однако, когда я включаю его, я получаю следующий вывод:
Array
(
...
[REMOTE_USER] => ****
[AUTH_TYPE] => Basic
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => operation=updatestatus&order=185&status=17&comment=Test&user=somenamePOST
[QUERY_STRING] =>
...
[PHP_AUTH_USER] => ****
[PHP_AUTH_PW] => ****
[REQUEST_TIME] => 1286889387
[argv] => Array
(
)
[argc] => 0
)
Где REQUEST_METHOD
содержит все параметры + добавленный POST
. Это не верно. Что я могу с этим поделать? Я также читал и пробовал решения, где люди использовали HttpWebRequest
, используя свойство PreAuthenticate
- но это также не работало для меня.