C #: TEMEL kimlik ile POST isteği PHP QUERY_STRING ve REQUEST_METHOD karıştırır?

0 Cevap

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ı.

0 Cevap