WebService返却テキストJSONデータフォーマット
WebServiceが返すフォーマットはすべてxmlです
Markup
前段js処理時にxmlを解析する必要がある
JavaScript
処理に苦労し互換性の問題もある
サイトはjson形式に戻りました
Markup
xmlがjson文字列を変換する前に処理する必要があります
WebServiceをJSONデータフォーマットに直接戻す方法1:
C#
文字列フォーマットを直接得ることができる欠点は、すべての方法でContextを書く必要があることです.Response.WriteとContext.Response.End
WebServiceをJSONデータフォーマットに直接戻す方法2:
Web.configで増加
C#
IISクラシックモードはhttpModules
appcodeにクラスファイルを追加
C#
C#
Markup
<string xmlns="">Hello Worldstring>
前段js処理時にxmlを解析する必要がある
JavaScript
$.parseXML(xmlstr).find("string").text();
処理に苦労し互換性の問題もある
サイトはjson形式に戻りました
Markup
<string xmlns="http://tempuri.org/">{"Name":" ","Age":18}string>
xmlがjson文字列を変換する前に処理する必要があります
WebServiceをJSONデータフォーマットに直接戻す方法1:
C#
[WebMethod]
public void HelloWorld()
{
string str= "Hello World";
Context.Response.Write(str);
Context.Response.End();
}
文字列フォーマットを直接得ることができる欠点は、すべての方法でContextを書く必要があることです.Response.WriteとContext.Response.End
WebServiceをJSONデータフォーマットに直接戻す方法2:
Web.configで増加
C#
<modules>
<add name="AsmxRequestModule" type="AsmxRequestModule"/>
</modules>
IISクラシックモードはhttpModules
appcodeにクラスファイルを追加
C#
public class AsmxRequestModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(Application_BeginRequest);
}
public void Dispose()
{
}
public void Application_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication;
string extension = Path.GetExtension(application.Request.Path);
if (application.Request.Path.IndexOf("/WebService.asmx/") > -1)
{
application.Response.Filter = new CatchTextStream(application.Response.Filter);
}
}
}
C#
public class CatchTextStream : Stream
{
#region
///
///
///
private Stream output;
#endregion
#region
///
///
///
///
///
///
///
public CatchTextStream(Stream s)
{
output = s;
}
#endregion
#region
public override bool CanRead
{
get { return output.CanRead; }
}
public override bool CanSeek
{
get { return output.CanSeek; }
}
public override bool CanWrite
{
get { return output.CanWrite; }
}
public override void Flush()
{
output.Flush();
}
public override long Length
{
get { return output.Length; }
}
public override long Position
{
get { return output.Position; }
set { output.Position = value; }
}
public override int Read(byte[] buffer, int offset, int count)
{
return output.Read(buffer, offset, count);
}
public override long Seek(long offset, SeekOrigin origin)
{
return output.Seek(offset, origin);
}
public override void SetLength(long value)
{
output.SetLength(value);
}
public override void Write(byte[] buffer, int offset, int count)
{
if (HttpContext.Current != null)
{
HttpContext context = HttpContext.Current;
Encoding encoding = context.Response.ContentEncoding;
string responseInfo = encoding.GetString(buffer, offset, count);
responseInfo = responseInfo.Replace("\r
" , "");
responseInfo = responseInfo.Substring(0, responseInfo.Length - 9);
buffer = encoding.GetBytes(responseInfo);
output.Write(buffer, 0, buffer.Length);
}
}
#endregion
}
そしてフロントで び すと、xmlを たないテキストデータを すことができ、webservice び し でNewtonsoftを することができます.Json.JsonConvertがJSON に されて りました.
:http://www.qyuit.com/post/65.html