相关疑难解决方法(0)

如何将HttpWebRequest与GET方法一起使用

我有以下代码,当方法是"POST"时工作正常,但更改为"GET"不起作用:

HttpWebRequest request = null;
request = HttpWebRequest.Create(uri) as HttpWebRequest;
request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
request.Method = "POST"; // Doesn't work with "GET"

request.BeginGetRequestStream(this.RequestCallback, null);
Run Code Online (Sandbox Code Playgroud)

ProtocolViolationException用"GET"方法得到一个例外.

编辑:看了一下使用Reflector后,似乎有一个显式检查"GET"方法,如果设置为它会抛出异常.

Edit2:我已经将我的代码更新为以下内容,但是当我调用EndGetResponse()时它仍会抛出异常

if (request.Method == "GET")
{
    request.BeginGetResponse(this.ResponseCallback, state);
}
else
{
    request.BeginGetRequestStream(this.RequestCallback, state);
}
Run Code Online (Sandbox Code Playgroud)

在我的函数ResponseCallback中,我有这个:

HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);
Run Code Online (Sandbox Code Playgroud)

这也引发了异常.

回答

上面的代码现在可以工作了,我忘了取出导致异常被抛出的Content-Type行.+1来调整和回答Jon.

工作代码如下:

HttpWebRequest request = null;
request = HttpWebRequest.Create(uri) as HttpWebRequest;
request.Method = "GET";// Supports POST too

if (request.Method == "GET")
{
    request.BeginGetResponse(this.ResponseCallback, state);
}
else
{
    request.BeginGetRequestStream(this.RequestCallback, state); …
Run Code Online (Sandbox Code Playgroud)

.net c# silverlight web-services http

28
推荐指数
2
解决办法
6万
查看次数

异步代码的单元测试

我有一些代码,它使用HttpWebRequest类的.BeginGetResponse()方法,它是异步的.此外,我正在使用Microsoft的Unit Test App项目来测试应用程序.

问题是测试框架没有等待运行异步代码的结束,所以我无法检查其结果.

我应该如何使用Unit Test App项目测试异步代码?我没有使用async/await modificators.

c# unit-testing windows-phone-8

9
推荐指数
1
解决办法
5262
查看次数