我也是Xamarin和C#的新手。我尝试用一些信息向我的服务器发出Http请求。 通常,android Native a使用AsyncTask和HttpClient。并构建一个json对象或名称值对,并对其进行加密以将信息与请求集成。 但是当我尝试用xamarin做同样的事情时,我遇到了一些问题。
使用System.Net.Http.HttpClient 比我的xamarin没有这个命名空间
我是xamarin的新手所以我不确定async和await关键字。 我读了很多文章,但没有运气:(
单击按钮我调用下面的方法
public async Task<int> ValidateUser(){
try{
var request = HttpWebRequest.Create (URL);
request.Method = "GET/POST";
String postString = String.Format ("AAA ={0}&BBB={1}&CCC={2}", "111",
"222","333");
byte[] postByte = Encoding.UTF8.GetBytes (postString);
Stream st = request.GetRequestStream ();
//I am reaching here
Console.WriteLine("Check for Validity");
request.ContentLength = postByte.Length;
st.Write (postByte, 0, postByte.Length);
st.Close ();
Task<Stream> contentTask = request.GetRequestStreamAsync();
Stream response = await contentTask;
String str = response.ToString();
// this is not getting printed in Console
Console.WriteLine("=====>>"+str);
}
catch (WebException exception) {
string responseText;
using (var reader = new StreamReader(exception.Response.GetResponseStream())) {
responseText = reader.ReadToEnd ();
Console.WriteLine ("====Dude Error"+responseText);
}
}catch(Exception e){
}
return 1;
}
任何帮助将不胜感激
答案 0 :(得分:2)
考虑使用RestSharp,这是为Xamarin创建的一个组件,用于促进Web请求。 Click here了解有关该组件的更多信息。它将促进关于webrequesting的所有事情(如序列化,自动返回类型检测,......)
你的代码看起来像是restsharp:
public async Task<int> ValidateUser(){
var client = RestClient (URL);
var request = new RestRequest ("AAA ={0}&BBB={1}&CCC={2}", "111",
"222","333");
client.ExecuteAsync (request, response => {
WebApiResponse webApiResponse = new WebApiResponse ();
webApiResponse.Content = response.Content;
webApiResponse.StatusCode = response.StatusCode;
webApiResponse.ResponseStatus = (WebApiResponseStatus)response.ResponseStatus;
return webApiResponse.Content;
});
return -1
}
答案 1 :(得分:0)
使用HttpWebRequest是一个坏主意,相反,最好关注为什么你没有System.Net.Http。*命名空间。 Imho最可能的原因是您没有添加System.Net.Http作为项目的参考。
以下是将System.Net.Http。*添加到项目中的方法。
在Visual Studio 2013中:
在Xamarin Studio中:
之后,当使用System.Net.Http时解决System.Net.Http应该没有问题;&#39;