cpl*_*uss 6 php c# post json .net-3.5
在将Json字符串发布到PHP Web服务器时遇到异常奇怪的行为.我使用JsonTextWriter对象来创建Json字符串.然后我将Json字符串作为POST请求发送.请参阅评论.代码中的HTML响应返回正确的输出,但在浏览器中查看时,网页显示NULL或array(0){}.
private void HttpPost(string uri, string parameters)
{
WebRequest webRequest = WebRequest.Create(uri);
webRequest.ContentType = "application/x-www-form-urlencoded"; // <- Should this be "application/json" ?
webRequest.Method = "POST";
byte[] bytes = Encoding.UTF8.GetBytes(parameters);
string byteString = Encoding.UTF8.GetString(bytes);
Stream os = null;
try
{ // Send the Post Data 
    webRequest.ContentLength = bytes.Length;   
    os = webRequest.GetRequestStream();
    os.Write(bytes, 0, bytes.Length);    
    Console.WriteLine(String.Format(@"{0}", byteString));     // <- This matches the Json object
}
catch (WebException ex)
{ //Handle Error }
try
{ // Get the response
    WebResponse webResponse = webRequest.GetResponse();
    if (webResponse == null) { return null; }
    StreamReader sr = new StreamReader(webResponse.GetResponseStream());
    Console.WriteLine(sr.ReadToEnd().Trim());                // <- Server returns string response (full HTML page)
}
catch (WebException ex)
{ //Handle Error }
}  
服务器上的相关PHP代码:
$json = json_encode($_POST);   # Not 'standard way'
var_dump(json_decode($json));
任何建议将不胜感激.
谢谢
尝试使用“application/json”作为内容类型。另外,请检查请求日志,或者如果可以的话可以进行端口 80 跟踪,以查看请求正文中发送到服务器的内容。
您还可以通过编写一个快速的 JQuery ajax 函数将一些 JSON 发送到 PHP 服务器来缩小问题的范围 - 是 C# 代码还是 PHP 代码有问题。PHP 代码与 C# 代码的这种隔离将告诉您 PHP 是否至少可以正常工作。如果是,则问题出在 C# 代码中。
| 归档时间: | 
 | 
| 查看次数: | 5878 次 | 
| 最近记录: |