xamarin iOS使用HttpClient共享项目无法正常工作

时间:2018-06-06 03:29:34

标签: ios xamarin xamarin.ios httpclient

我使用一个共享项目为我的所有网络服务设置了一个Xamarin android项目。在该共享项目中,我有一个类,其方法是通过HttpClient.PostAsync()调用REST端点。我现在正在研究iOS版本,并且认为只使用我已经为Android设计的相同类/方法会非常轻松但是由于某种原因,iOS无法正常工作。

我没有得到任何异常被抛出,只是对PostAsync()的调用似乎已经死亡而且没有做任何我能说的事情。我也试过GetAsync()调用同样的结果......没有任何反应。

以下是一些示例代码:

public class UserService
{
    public async Task<UserModel> LoginUser(UserModel userModel)
    {
        var url = new Uri(Constants.BaseUrl + "v2api/LoginUser");
        try
        {
            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                string userModelString = JsonConvert.SerializeObject(userModel);
                var response = await client.PostAsync(url, new StringContent(userModelString, Encoding.Default, "application/json"));
                if (response.IsSuccessStatusCode)
                {
                    userModel = JsonConvert.DeserializeObject<UserModel>(await response.Content.ReadAsStringAsync());
                }
            }
        }
        catch (Exception e)
        {
            string exceptionString = e.ToString();
        }
        return userModel;
    }
}

我已将断点全部放在此处,它会转到:v ar response = await行,但就是这样。我再也没有得到任何回报。如上所述,这适用于android项目,它只是iOS无法正常工作。我确定我忽视了一些非常简单的事情,我只是不知道它会是什么。

我尝试将其添加到我的info.plist文件中,但它没有帮助:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>mysite.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true />
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false />
        </dict>
    </dict>
</dict>

关于下一步要去哪里的建议?

TIA

1 个答案:

答案 0 :(得分:0)

在做了一些谷歌搜索之后,我终于解决了这个问题。这个帖子是我的确切问题:https://forums.xamarin.com/discussion/17086/httpclient-postasync-doesnt-work-when-awaited

我用.Result调用我的登录方法;并且显然这在iOS中不起作用,但奇怪的是在Android中。

Sushi,感谢iOS Http教育中的教育:)