0
JSON을 반환하는 웹 서비스가 있습니다. 브라우저 또는 테스트 프로그램을 통해 프로그램을 테스트 할 때 문자열에는 항상 백 슬래시가 추가됩니다. 내가 문자열을 만들 JSON.NET 및 JsonTextWriter을 사용하고WCF 웹 서비스가 여분의 백 슬래시가있는 JSON 문자열을 반환합니다.
{"ack":{"qry":[{"retn":"abcd","desc":"defg"}]
실제로 게재되어
{\"ack\":{\"qry\":[{\"retn\":\"abcd\",\"desc\":\defg\"}.
과 같은 예를 들어, 내 출력을 기대하고있는 경우처럼 보일 수 있습니다.
private string jsonParse(string respStr)
{
string jSonStr;
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
JsonWriter writer = new JsonTextWriter(sw);
writer.Formatting = Formatting.None;
List<string> commands = (from word in respStr.Split(':') select word).ToList();
for (int j = 0; j < commands.Count; j += 3)
{
List<string> param = (from par in commands[j + 2].Split(new Char[] { ',', '=' }) select par).ToList();
writer.WriteStartObject();
writer.WritePropertyName(commands[j]);
writer.WriteStartObject();
writer.WritePropertyName(commands[j + 1]);
writer.WriteStartArray();
writer.WriteStartObject();
for (int i = 0; i < param.Count - 1; i += 2)
{
writer.WritePropertyName(param[i]);
writer.WriteValue(param[i + 1]);
}
writer.WriteEndObject();
writer.WriteEndArray();
writer.WriteEndObject();
writer.WriteEndObject();
}
jSonStr = sb.ToString();
return jSonStr;
}
내 웹 서비스의 운영 계약은 다음과 같습니다
HttpWebRequest GETRequest = (HttpWebRequest)WebRequest.Create(url);
GETRequest.Method = "GET";
Console.WriteLine("Sending GET Request");
HttpWebResponse GETResponse = (HttpWebResponse)GETRequest.GetResponse();
Stream GETResponseStream = GETResponse.GetResponseStream();
StreamReader sr = new StreamReader(GETResponseStream);
Console.WriteLine(sr.ReadToEnd());
단서로 :
[OperationContract]
[WebGet(ResponseFormat=WebMessageFormat.Json, UriTemplate="/{system}/{command}")]
string getMethod(string system, string command);
및
마침내 나는 시험에 사용하고 프로그램과 같이 HttpWebRequest를 사용 왜 이런 일이 일어나는가?
나는이 솔루션을 좋아한다. 귀하의 서비스는 클라이언트가 데이터를 사용하는 방법에 대해 완전히 독립적이어야합니다. 절대적으로 필요한 경우가 아니면 특정 클라이언트에 대한 서비스를 코딩하지 마십시오. –