问题标签 [nshttpurlresponse]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 向 NSHTTPURLResponse 提供 HTTPVersion
我的应用程序使用自定义NSURLProtocol
子类。我需要NSHTTPURLResponse
用我的副本替换,修改一些标题字段。因此,我创建了新NSHTTPURLResponse
实例,如下所示:
参数出现问题HTTPVersion
。我没有找到从原始响应中获取此值的任何方法。
文档说:
这通常表示为“HTTP/1.1”。
但是提供硬编码值看起来不像是一个解决方案,它会一直正常工作。
请帮我解决这个问题。
ios - WKWebview 丢失登录 cookie
我目前对使用 WKWebView 显示网页的混合应用程序有疑问。
应用程序重新启动并创建新会话/WKWebWiew 后,Web 服务会为 WKWebView 提供一个新的登录 cookie。这在三分之二的尝试中都可以正常工作,但在某些情况下,登录 cookie 不会存储在 WKWebView (NSHTTPCookieStorage) 使用的共享 cookie 存储中。
(使用与 UIWebview 相同的 web 服务可以正常工作)
我尝试了网络分析工具,我可以看到网络服务正在向我发送新的 cookie。出于某种原因,WKWebView / NSURLRequest 不存储更新的登录 cookie。我读过 WKWebView 似乎会按预定的时间间隔更新 cookie,您可以通过更新 WKProcessPool 来强制它更新,但没有成功。
我一直在尝试使用以下方法从 Web 服务中读取登录 cookie:
但由于某种原因,会话 cookie/登录 cookie 在标题中不可见,我的猜测是由于某种原因它被 NSURL 隐藏,因为如果我通过设置关闭自动 Cookie 处理,我可以看到它们:
然而,它确实给了我很多其他问题......
有没有人有类似的问题或任何意见?
ios - NSHTTPCookieStorage 用于相同的 URL 但不同的用户
可能这是一个愚蠢的问题,但我想为相同的 url 存储 cookie,但为用户名存储不同的 cookie。如何使用 NSHTTPCookieStorage 来实现?这就是我从响应中存储 cookie 的方式。
nsurlsession - NSURLSession 中 500 错误的响应数据在哪里?
我的 iOS 应用程序中有以下 Swift 代码:
当对 Web 服务 API 的调用成功时,这一切正常:response!.statusCode
设置正确并且data
传递到完成处理程序中的内容可以从 JSON 解析为有用的对象。
但是,当服务器响应是错误时,例如 500,则data
为零字节,我只能看到标头信息,而不是响应的正文。
这是一个示例响应,使用代理应用程序Charles从模拟器中收集:
HTTP/1.1 500 内部服务器错误
传输编码:分块
服务器:Microsoft-IIS/8.0
X-Powered-By:ASP.NET
Set-Cookie:ARRAffinity=000000000000000000008888888888888888888888888aaaaaaaaaaaaaaaa;Path=/;Domain=blah-testing.azurewebsites.net
日期: 2016 年 7 月 21 日星期四 05:57:44 GMT{"ExceptionType":"Exception","Message":"Not on your Nelly","StackTrace":" at Blah.Controllers.CustomersController.Get() in D:\Users\timregan\Source\Repos\ServerSideCode\Blah \ApiControllers\CustomersController.cs:第 37 行\r\n 在 lambda_method(Closure , Object , Object[] )\r\n 在 Microsoft.AspNetCore.Mvc.Internal.ObjectMethodExecutor.Execute(Object target, Object[] 参数)\ r\n 在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__28.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.ExceptionServices .ExceptionDispatchInfo.Throw()\r\n 在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__18.MoveNext()\r\n--- 堆栈跟踪从上一个引发异常的位置结束 ---\r\ n 在系统。Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 Microsoft.AspNetCore.Authentication.AuthenticationMiddlewareHandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext()\r\n--- 堆栈跟踪结束从先前引发异常的位置 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 Microsoft.AspNetCore.Authentication.AuthenticationMiddlewareHandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext()\r\n--- 堆栈跟踪结束从先前引发异常的位置 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 Microsoft.AspNetCore.Authentication.AuthenticationMiddlewareTaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 Microsoft.AspNetCore。 Authentication.AuthenticationMiddlewareTaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 Microsoft.AspNetCore。 Authentication.AuthenticationMiddleware
1.<Invoke>d__18.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware
1.d__18.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 Blah.Startup.<>c.<b__6_0>d.MoveNext() 在 D:\Users\timregan\Source\Repos\ServerSideCode\Blah \Startup.cs:第 59 行","状态代码":500}
但在 Xcode 中,相同的响应却少得多。标头元素都在NSHTTPURLResponse
对象中,但完成处理程序的其他参数dataTaskWithRequest
什么都没有:data
零字节和error
is nil
。带有服务器错误堆栈跟踪的响应正文到哪里去了?如何在 Swift 中访问它?
ios - 如何从给定的 NSHTTPURLResponse 获取 HTTP 协议版本?
从NSHTTPURLResponse
文档中,我没有找到获取HTTP
版本的方法(i.e. "HTTP/1.1" or "HTTP/1.0")
。
HTTP
标头字段可通过所有 Header Fields 属性获得,但HTTP
协议版本未在标头字段中给出,因为它不是HTTP
标头。
注意: init,NSHTTPURLResponse
initializer
(initWithURL:statusCode:HTTPVersion:headerFields:)
确实需要HTTPVersion
作为输入,所以理论上它可能已经保存在那里。
但是,我找不到HTTPVersion
从给定响应中获取的属性或方法,例如从 NSURLSessionDataTask 返回的响应。
ios - 如何立即获得结果块?
我正在使用块从一个类中的响应中获取标题字段,而我必须在另一个类中获取它。
我实现了这样的代码
头等舱:
在 userAuthentication 类中:
在这里,我的问题是在头等舱中,我得到dict
了空值。
即使在userAuthentication
课堂上,我也变得空虚。
但是一段时间后,回调方法正在调用,然后我可以在completionHandler
.
那么我怎样才能在 firstClass 中得到响应呢?
ios - HTTPURLResponse allHeaderFields Swift 3 大写
在转换为 Swift 3 时,我注意到从 HTTPURLResponse 读取标头字段时出现了一个奇怪的错误。
不再工作。
我打印出所有标题字典,我所有的标题键似乎都在句子的情况下。
根据查尔斯代理,我所有的标题都是小写的。根据后端团队的说法,在他们的代码中,标题是 Title-Case。根据文档:标题应该不区分大小写。
所以我不知道该相信哪个。有没有其他人在 Swift 3 中发现他们的标题现在被 iOS 变成了句子大小写?如果是这样,这是我们想要的行为吗?
我应该用 Apple 记录一个错误,还是应该只在 HTTPURLResponse 上创建一个类别,以允许自己不区分大小写地查找标头值。
nshttpcookie - 来自 HTTPURLResponse 的重复 Set-Cookie 标头
我正在使用 API 来获取用于验证后续请求的 cookie。我需要从这个响应头集合中获取 cookie:
我需要得到以下cookie:
我想解析标头并返回该 cookie,但以下代码仅显示我不想要的 cookie:
上面的代码产生以下输出:
不需要的Set-Cookie
值必须替换Set-Cookie
返回的标头字典中的所需值。有没有办法可以Set-Cookie
在替换之前检索想要的值?
http-headers - HTTP 标头返回的格式是什么?
我一直在尝试对 HTTP 响应标头进行单元测试。我需要从标头接收 cookie。我得到了两个Set-Cookie
标题,但我需要一个用于身份验证。返回的标头是:
我添加了一个包含这些值的测试文件:
我需要第二个Set-Cookie
值,但是当我尝试访问它的值时,我得到了第一个值Set-Cookie
。我假设是因为我将标题放在字典中。但是当我在单元测试中存根响应时,标题所需的格式是字典。我只得到一个Set-Cookie
标题,因为我不能在字典中拥有两个相同的键。
我做错了什么吗?
nshttpurlresponse - 如何为 HTTPURLResponse 返回“nil”?
我有以下用于从响应标头中检索 cookie 的方法:
我正在创建单元测试以验证我的代码是否nil
针对适当的场景返回。但是,上述方法中我似乎无法有效测试的唯一部分是:
在我的测试中,我创建了一个响应以传递给上述方法:
由于初始化程序HTTPURLResponse
需要一个非可选的URL
,我似乎无法弄清楚如何使用其属性的nil
值来测试响应。url
有没有办法让我用一个来测试这个nil
url
?