HttpListenerContext.Request.InputStream始终为null

时间:2017-09-13 12:00:45

标签: c# xamarin xamarin.ios xamarin.android httplistener

我在端口60080上发送请求

var XHR = new XMLHttpRequest();
XHR.open('GET', 'http://localhost:60080/api/products');
XHR.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
XHR.body = JSON.stringify({ email: "hello@user.com", response: { name: "Tester" } });
XHR.send();

并使用HttpListener

接收它
this.listener = new HttpListener();
listener.Prefixes.Add("http://+:60080/");
listener.Start();
listener.BeginGetContext(HandleRequest, listener);

所以我得到了HttpListenerContext

HttpListenerContext context = listener.EndGetContext(result);

当我尝试获取InputStream(在Android或UWP上)时,它始终为null。 ContentLength = 0; 当我在iOS InputStream上测试时不为空且ContentLength > 0;

我的问题是什么?

更新

我解决了我的问题。

我发送了一个Post方法,但实际上是方法OPTIONS。

我在回复中发送了标题,然后是Post方法

httpListenerContext.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
httpListenerContext.Response.AddHeader("Content-type", "application/json");
httpListenerContext.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
httpListenerContext.Response.AddHeader("Access-Control-Max-Age", "1728000");
httpListenerContext.Response.AppendHeader("Access-Control-Allow-Origin", "*");
httpListenerContext.Response.Close();

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。

我发送了一个Post方法,但实际上是方法OPTIONS。

这是由于CORS技术。

我在回复中发送了标题,然后是Post方法

httpListenerContext.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
httpListenerContext.Response.AddHeader("Content-type", "application/json");
httpListenerContext.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
httpListenerContext.Response.AddHeader("Access-Control-Max-Age", "1728000");
httpListenerContext.Response.AppendHeader("Access-Control-Allow-Origin", "*");
httpListenerContext.Response.Close();