过去两天我一直在努力处理php post数据,在绝对肯定我的代码是合乎逻辑的之后,我放弃了尝试让它自己运行。
这是我的C#代码,
class SecureWeb
{
/*
* CONSTRUCTOR
*/
public SecureWeb()
{
//INITIALIZE
}
public bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
public string Post(string URI, NameValueCollection Message)
{
try
{
string result = null;
using (WebClient wc = new WebClient())
{
wc.Proxy = null;
wc.Credentials = CredentialCache.DefaultCredentials;
ServicePointManager.ServerCertificateValidationCallback += ValidateServerCertificate;
byte[] bByte = wc.UploadValues(URI, (Message));
result = Encoding.UTF8.GetString(bByte);
}
return result;
}
catch (Exception) { }
return null;
}
}
这是我的PHP代码(是的,我尝试过使用简单的回声),
<?php
function getParams() {
if (!isset($_POST['db'])) {
return false;
}
if (!isset($_POST['user'])) {
return false;
}
return true;
}
if (!getParams()) {
echo('NULL_DATA');
exit();
}
else {
$user = $_POST['user'];
echo ($user);
exit();
}
&GT;
我收到406错误声称我的请求是“不可接受”。 我也相当肯定手头的问题是我的服务器,我只是不确定需要修复或调整什么。
答案 0 :(得分:1)
添加
wc.Headers.Add("Content-Type","application/x-www-form-urlencoded");
发送请求之前,还删除来自
的消息的括号wc.UploadValues(URI, Message);
呼叫
答案 1 :(得分:0)
在我找到解决方案之前,我使用了每个可能的标题,看到我的网络服务器100%确信问题不在他们的最后。事实证明,我需要一个用户代理,因为由于一些奇怪的原因,请求默认没有获得一个。