Json 문자열을 PHP 웹 서버에 게시 할 때 비정상적인 동작이 발생합니다. 나는 Json 문자열을 생성하기 위해 JsonTextWriter 객체를 사용한다. 그런 다음 Json 문자열을 POST 요청으로 보냅니다. 의견을 참조하십시오. 코드의 HTML 응답이 정확한 결과를 반환하지만 브라우저에서 볼 때 웹 페이지는 NULL 또는 array (0) {}를 표시합니다. 서버Json.NET을 사용하는 POST Json 문자열에서 원격 PHP 스크립트
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));
.
감사합니다.
도움 주셔서 감사합니다. 우리는 이러한 디버깅 기술 중 일부를 시도하여 문제가 C#의 POST 인코딩과 관련이 있음을 확인했습니다. application/json을 사용하더라도 PHP에서 null 값을 얻습니다. urlencoding을 사용하여 문자열을 얻으면 작동합니다. – Russell
@Russell - 정말 멋지다! 다행 이네. 이와 같은 문제를 해결하는 가장 좋은 방법은 깨진 구성 요소를 찾을 때까지 각 구성 요소를 분리하고 독립적으로 테스트하는 것입니다. – jmort253