NSHttpURLResponse在设备上包含的值与在xamarin iOS app上的模拟器上的值不同

时间:2013-08-30 07:13:17

标签: iphone ios cookies xamarin.ios nshttpurlresponse

我在xamarin上制作iPhone应用程序。我遇到了一个非常令人困惑的问题。我正在对一个链接进行NSURLConnection以从头部获取cookie信息,并使用该cookie打开其他受保护的链接。在连接:didReceiveResponse:方法中,NSHttpURLResponse包含要检索的“Set-Cookie”字段。我在模拟器上运行应用程序时获取正确的标头信息。但是在设备上,相同的代码不会返回带有cookie的完整标头。这也阻止了我调用其他链接。如果我在objective-c中从本机示例应用程序运行联系相同的URL,我会得到正确的标题信息。它只是不在xamarin app的设备上工作。

创建连接的代码是

NSMutableUrlRequest request = new NSMutableUrlRequest(url);
request.HttpMethod = "GET";
request.ShouldHandleCookies = true;
request.Headers = header;
URLConnDelegate connectionDelegate = new URLConnDelegate (this);
NSUrlConnection connection = new NSUrlConnection (request, connectionDelegate, true);

接收回复的代码是

public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response)
    {
        NSHttpUrlResponse httpResponse = response as NSHttpUrlResponse;
        Console.WriteLine (httpResponse.AllHeaderFields);
        NSString cookieStr = httpResponse.AllHeaderFields.ValueForKey (new NSString ("Set-Cookie")) as NSString;
        caller.setCookie (cookieStr);
        NSMutableUrlRequest request = new NSMutableUrlRequest (new NSUrl(caller.urlString));
        caller.loadRequest (request);
    }

当我从设备运行时,set-cookie字段不会出现。

非常感谢任何帮助。

由于

0 个答案:

没有答案