C#:带有基本身份验证的POST请求在PHP中混合了查询字符串和请求方法?
我在从C#向Apache(Windows)服务器上的PHP脚本发送POST请求时遇到问题。一切正常,除非我指示Apache通过C#:带有基本身份验证的POST请求在PHP中混合了查询字符串和请求方法?,c#,php,post,webclient,basic-authentication,C#,Php,Post,Webclient,Basic Authentication,我在从C#向Apache(Windows)服务器上的PHP脚本发送POST请求时遇到问题。一切正常,除非我指示Apache通过.htaccess文件要求使用基本身份验证的有效用户 但是让我们把事情安排好。我使用以下代码使用HTTP-POST将键/值对列表发送到我的PHP脚本: NameValueCollection nameValues = new NameValueCollection(); nameValues["operation"] = ...; nameValues["order"]
.htaccess
文件要求使用基本身份验证的有效用户
但是让我们把事情安排好。我使用以下代码使用HTTP-POST将键/值对列表发送到我的PHP脚本:
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);
?>
其中,
REQUEST\u方法
包含所有参数+附加的POST
。这是错误的。我能怎么办?我也读过并尝试过解决方案,人们使用HttpWebRequest
使用PreAuthenticate
属性-但这对我也不起作用。Hm.没有让它起作用,但通过自己的身份验证实现,所以我不再需要基本的身份验证。如果有人有想法的话,他仍然对有效的解决方案感兴趣;-) 电线上的实际反应是什么?知道这一点将有助于判断错误是在C#部分还是PHP部分。我的C#代码接收我在上一个代码片段中给出的输出。我没有调试实际的HTTP通信-我该怎么做?你想看到什么?最好的办法可能是让Wireshark在他们之间的网络上运行,并观察原始TCP流量,看看C#发送的HTTP是否有效。。。如果没有,你至少知道它是在C#(或者你的代码,或者你正在使用的库中的一个bug)…嗯,我的脚本正在被调用,我也得到了回复。这基本上和这里提到的问题相同(),只是解决方案对我不起作用。谢谢你在没有给出合理理由的情况下否决了这个问题。我爱你们这些人。
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
)