我在Visual Studio 2012中编写了一个简单的Web服务。
当我在Internet Explorer中测试Web服务时,我得到以下结果。
<?xml version="1.0" encoding="UTF-8"?>
<string xmlns="http://tempuri.org/">[{"ID":1,"ConsultantName":"Jim",
"ConsultantEmailAddress":"Jim@xyz.com","ConsultantCellNumber":null,
"ConsultantPhoneNumber":null},{"ID":2,"ConsultantName":"Steve","ConsultantEmailAddress":"Steve@xyz.com",
"ConsultantCellNumber":null,"ConsultantPhoneNumber":null}]</string>
以JSON格式返回的两条记录
一切都很好
现在在XAMARIN中调用Web服务:
在下面的代码中,似乎在调用Web服务时请求成功,但是当代码尝试使用结果(JSON字符串)时,会发生400 Bad Request错误。
这是发生错误的行:
HttpWebResponse response =(HttpWebResponse)request.EndGetResponse(callbackResult);
(此行位于所包含代码的底部)
错误 - //远程服务器返回错误:(400)错误请求
代码如下: 如果您有任何意见或指导,我将不胜感激。
除此之外,如果XAMARIN能够提供一个消费Web服务的真实简单示例,那将会很棒。到目前为止,我见过的每个例子都有一些复杂问题,如果你的知识很少,你甚至可以在理解代码之前做大量的研究。 如何使用非常简单的代码覆盖视频:使用XAMARIN Forms进行异步Web消费。 我面临的问题是我花了三天时间摆弄。如果我有一个简单的工作示例,我可以慢慢增加复杂性,直到我完全理解发生了什么,但现在我仍然不知道我的问题在哪里。
感谢您的期待。
private async Task ExecuteLoadConsultants ()
{
Initialized = true;
IsBusy = true;
ConsultantInfo x = new ConsultantInfo{ ConsultantName = "WEwewewewe" };
Consultants.Add (x);
// call to webservice
HttpWebRequest webRequest =
(HttpWebRequest)WebRequest.Create ("http://10.0.2.2:53498/TennantMobileWS1.asmx?op=GetConsultantAll");
webRequest.UseDefaultCredentials = true;
webRequest.Method = "POST";
webRequest.Accept = "application/json";
webRequest.ContentType = "application/json";
webRequest.UseDefaultCredentials = true;
webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest);
IsBusy = false;
}
private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the stream request operation
Stream postStream = request.EndGetRequestStream(asynchronousResult);
//Start the web request
request.BeginGetResponse(new AsyncCallback(GetResponceStreamCallback), request);
}
void GetResponceStreamCallback(IAsyncResult callbackResult)
{
HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
// Remote server returned an error: (400) Bad Request on line below
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
}