Return 阿拉伯语文本来自 ASP.NET JSON
Return Arabic text via ASP.NET JSON
我想通过 asp.net 网络方法 return 将阿拉伯语文本 return 编辑为 JSON,
这是我正在使用的代码:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void getAr()
{
ResultTemplate resultTemplate = new ResultTemplate();
resultTemplate.data = "بسم الله";
JavaScriptSerializer js = new JavaScriptSerializer();
string retJSON = js.Serialize(resultTemplate);
Context.Response.Clear();
Context.Response.ContentType = "application/json";
Context.Response.AddHeader("content-length", retJSON.Length.ToString());
Context.Response.Flush();
Context.Response.Write(retJSON);
}
当我 运行 网络方法时,它一直在加载而没有任何响应!
你不应该像这样使用 WebMethod
。将其签名更改为:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getAr()
{
string result;
// fill it ...
return result;
}
加上
Response.Flush
表示立即发送缓冲输出。所以你应该把它放在最后。
Context.Response.Write(retJSON);
Context.Response.Flush();
另外content-length
不等于string.Length。您应该将其转换为字节数组,然后使用其长度。
byte[] s = Encoding.UTF8.GetBytes(resultString);
response.AddHeader("Content-Length", s.Length.ToString());
response.BinaryWrite(s);
我想通过 asp.net 网络方法 return 将阿拉伯语文本 return 编辑为 JSON, 这是我正在使用的代码:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void getAr()
{
ResultTemplate resultTemplate = new ResultTemplate();
resultTemplate.data = "بسم الله";
JavaScriptSerializer js = new JavaScriptSerializer();
string retJSON = js.Serialize(resultTemplate);
Context.Response.Clear();
Context.Response.ContentType = "application/json";
Context.Response.AddHeader("content-length", retJSON.Length.ToString());
Context.Response.Flush();
Context.Response.Write(retJSON);
}
当我 运行 网络方法时,它一直在加载而没有任何响应!
你不应该像这样使用 WebMethod
。将其签名更改为:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getAr()
{
string result;
// fill it ...
return result;
}
加上
Response.Flush
表示立即发送缓冲输出。所以你应该把它放在最后。
Context.Response.Write(retJSON);
Context.Response.Flush();
另外content-length
不等于string.Length。您应该将其转换为字节数组,然后使用其长度。
byte[] s = Encoding.UTF8.GetBytes(resultString);
response.AddHeader("Content-Length", s.Length.ToString());
response.BinaryWrite(s);