Tôi đang gặp phải một hành vi lạ bất thường khi BẬT một chuỗi Json đến một máy chủ web PHP. Tôi sử dụng đối tượng JsonTextWriter để tạo chuỗi Json. Sau đó tôi gửi chuỗi Json dưới dạng yêu cầu POST. Vui lòng xem nhận xét. Phản hồi HTML trong mã trả lại kết quả chính xác, nhưng khi được xem trong trình duyệt, trang web hiển thị hoặc NULL hoặc mảng (0) {}.BÀI ĐĂNG Chuỗi Json đến Tập lệnh PHP Từ xa bằng cách sử dụng Json.NET
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 }
}
mã PHP có liên quan trên máy chủ:
$json = json_encode($_POST); # Not 'standard way'
var_dump(json_decode($json));
Bất kỳ lời đề nghị sẽ được đánh giá rất nhiều.
Cảm ơn
Cảm ơn sự giúp đỡ của bạn. Chúng tôi đã thử một số kỹ thuật gỡ lỗi này và xác định rằng sự cố xảy ra với mã hóa POST từ C#. Ngay cả với ứng dụng/json, chúng tôi nhận được các giá trị null trong PHP. Nếu chúng ta GET chuỗi với urlencoding, nó hoạt động. – Russell
@Russell - Thật tuyệt vời! Vui vì bạn đã tìm ra. Kỹ thuật tốt nhất để giải quyết vấn đề như thế này là phá vỡ từng thành phần và kiểm tra nó một cách độc lập cho đến khi bạn tìm thấy thành phần bị hỏng. – jmort253