在PCL中有以下代码
class CallSAPService : ICallSAPService
{
public string MakeSAPRestCall(string url, string jsondata, string username, string password)
{
string retmessage = "";
try
{
NetworkCredential cr = new NetworkCredential();
cr.UserName = username;
cr.Password = password;
HttpClientHandler handler = new HttpClientHandler();
handler.Credentials = cr;
HttpClient httpClient = new HttpClient(handler);
Uri Auri = new Uri(url);
StringContent content = new System.Net.Http.StringContent(jsondata.ToString(), Encoding.UTF8, "application/json");
var result = httpClient.PostAsync(Auri, content).Result;
Task<string> ff = result.Content.ReadAsStringAsync();
retmessage = ff.Result;
//StringContent content2 = new System.Net.Http.StringContent(jsondata.ToString(), Encoding.UTF8, "application/json");
//var httpClient2 = new HttpClient(new HttpClientHandler());
//Task<HttpResponseMessage> response = httpClient2.PostAsync(url, content2);
//response.Result.EnsureSuccessStatusCode();
//var res = response.Result;
// retmessage = res.Content.ReadAsStringAsync().ToString();
}
catch (Exception Ex)
{
retmessage = Ex.Message;
}
return retmessage;
}
}
}
这适用于Andorid但不适用于Windows Phone项目。在windows phone项目中行:
Task<string> ff = result.Content.ReadAsStringAsync();
没有执行
答案 0 :(得分:0)
我很确定这一行是你的问题:
retmessage = ff.Result;
您无法在Windows Phone的UI线程上执行同步I / O.使用async和await而不是Task.Result。