我正在 xamarin 上制作 iPhone 应用程序。我遇到了一个非常莫名其妙的问题。我正在对链接进行 NSURLConnection 以从标头获取 cookie 信息并使用该 cookie 打开其他受保护的链接。在 connection:didReceiveResponse: 方法中,NSHttpURLResponse 包含要检索的“Set-Cookie”字段。在模拟器上运行应用程序时,我得到了正确的标题信息。但是在设备上,相同的代码不会返回带有 cookie 的完整标头。这也阻止了我调用其他链接。如果我在 Objective-c 中运行来自本机示例应用程序的相同 url,我会得到正确的标题信息。它只是不适用于 xamarin 应用程序的设备。
创建连接的代码是
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 字段时,它不会出现。
任何帮助将非常感激。
谢谢