将JavaScriptAJAX转换为HttpWebRequest代码

Convert JavaScript AJAX to HttpWebRequest code

本文关键字:HttpWebRequest 代码 转换 JavaScriptAJAX      更新时间:2024-05-20

我需要在控制台应用程序中模拟AJAX对web服务的调用。有什么方法可以用HttpWebRequest做到这一点吗?

来源请求:

var webRequest=Sys.Net.WebServiceProxy.invoke('http://webserver.com/WS_Message.asmx','MyMethod',false,{p1:aa,p2:bb,p3:123},onSuccess,onFailure,userContext,timeout,enableJsonp,jsonpCallbackParameter);

不起作用的样品:

HttpWebRequest request = (HttpWebRequest) WebRequest.Create("http://webserver.com/WS_Message.asmx/MyMethod");
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
byte[] _bytes= Encoding.UTF8.GetBytes("{p1:aa,p2:bb,p3:123}");
request.ContentLength = _bytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(_bytes, 0, _bytes.Length);
stream.Close();
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
    Console.WriteLine(reader.ReadToEnd());
}

看起来像是在用javascript调用(基于.NET的)web服务。为什么不简单地在控制台应用程序中添加一个web引用,并这样称呼它呢?

这将比尝试通过HttpWebRequest手动复制web服务调用要少得多。

我不得不使用Chrome开发者控制台来查看正确的http头。我的问题与不正确的JSON字符串格式有关。

@"{"p1":"aa","p2":"bb","p3":123}"