Benim Apache (Windows) sunucusu üzerinde bir PHP komut dosyası için C # bir POST isteği gönderme ile ilgili bir sorun var. Ben bir .htaccess
dosyası aracılığıyla TEMEL kimlik doğrulaması kullanarak geçerli bir kullanıcı gerektiren Apache talimat sürece her şey çalışıyor.
Ama sırayla şeyler koyalım. HTTP-POST kullanarak benim PHP komut dosyası için anahtar / değer çiftleri bir listesini göndermek için aşağıdaki kodu kullanıyorum:
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();
}
Sunucu üzerinde PHP script şöyle:
<?php
print_r($_SERVER);
?>
Burada bazı başlık bilgileri Yani ben sadece çıktı. Benim htaccess
dosyası, her şey yolundaymış temel kimlik doğrulamasını kapatın. Ben onu açtığınızda, ancak, ben şu çıktıyı alıyorum:
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
tüm parametreleri + ihtiva ettiği durumda, ekteki POST
. Bu yanlış. Ben ne bu konuda ne yapabilirim? Ben de okudum ve çözümleri, HttpWebRequest
PreAuthenticate
özelliğini kullanarak kullanılan insanlar denedim - ama bu da benim için işe yaramadı.