我在IOS应用程序中使用PromiseKit与Rails RESTful后端通信,并且有一些调用只返回头,例如通过在后端执行head 200
。
我尝试的是:
我使用了[NSURLConnection POST:url formURLEncodedParameters:parameters]
将数据发布到后端,后端确实收到了数据并响应了头200
消息,但PromiseKit报告了以下异常:
2014-07-31 11:19:39.501 HelloPOS[13223:60b]Error Domain=NSCocoaErrorDomain Code=3840“操作无法完成。(可可错误3840)。”(没有值。)UserInfo=0xa4c5a90{NSDebugDescription=无值,PMKURLErrorFailingDataKey={length=1,capacity=16,bytes=0x20},PMKURLErrorFailingURLResponseKey={URL:http://SOME_APP.SOME_HOST.com/api/v1/sales.json}{状态代码:200,标题{“缓存控制”=“max age=0,private,必须重新验证”;Connection=“keep alive”;“内容长度”=1;“内容类型”=“application/json”;Date=“Thu,2014年7月31日03:19:25 GMT”;Etag=“\”7215ee9c7d9dc229d2921a40e899ec5f\”;Server=“WEBrick/1.3.1(Ruby/2.0.0/2014-05-08)”;Via=“1.1.1 vegur”;“X-Content-Type-Options”=nosniff;“X-Frame-Options”=SAMEORIGIN;“X-Request-Id”=“5a1c1aa1-4b42-41ea-8397-a5df8fa956bc”;“X-Runtime”=“0.013359”;“X-Xss-Protection”=“1;模式=块”;}}
这可能是因为只有标题的响应没有正文,而导致了错误
PS:我已经更改了异常消息中的URL
问题是服务器声称响应的JSON内容长度为1字节。但是响应并没有解析成JSON,所以PromiseKit可能会出错。
PromiseKit没有提供忽略响应的机制,但是如果您无法修复服务器以提供正确的响应,您可以在这里轻松做出自己的promise。
#import <OMGHTTPURLRQ.h>
- (PMKPromise *)myPromise:(id)args {
id rq = [OMGHTTPURLRQ POST:url:args];
id q = ;
return [PMKPromise new:^(PMKPromiseFulfiller fulfill, PMKPromiseRejecter reject){
[NSURLConnection sendAsynchronousRequest:rq queue:q completionHandler:^(id rsp, id data, NSError *urlError) {
if (urlError) {
reject(urlError)
} else {
fulfill(nil);
}
}];
}];
}
编辑:PromiseKit现在可以解决这个特定的情况,所以您不应该再遇到这个特定的错误。
问题内容: 我的网络服务返回一个JSON对象,如下所示 即,当我将此地址放入chrome浏览器中时,我可以到达上面。 我正在尝试在浏览器中阅读此内容,以便可以创建一个下拉选项…但是从以下代码开始我一无所获: 我总是在警报框中。我用fiddler2再次检查了Web服务请求/响应是否正常,我什至可以拦截Web服务和浏览器之间的json对象。 我也试过 我又得到了空。 我已经看过Ajax要求的json响
API响应一个JSON对象,该对象具有一个对象数组,如,其中包含我们需要处理的数据。问题是数组有1.000个对象,endpoint响应很慢,所以流式传输需要几秒钟才能完成,而我们的“博客”编程模型使用Apache HttpClient来消耗endpoint,杰克逊来序列化响应,我们等待为了获得完整的正文来解析保存数组的所有对象,而不是在每个元素到来时处理它们,节省了内存使用的时间,因为一旦处理了一
问题内容: 我正在尝试使用正则表达式搜索网页,但出现以下错误: TypeError:无法在类似字节的对象上使用字符串模式 我知道为什么urllib.request.urlopen()返回一个字节流,因此,至少在我看来,re不知道要使用的编码。在这种情况下我该怎么办?有没有办法在urlrequest中指定编码方法,或者我需要自己重新编码字符串?如果是这样,我想做什么,我假设我应该从标题信息中读取编码
问题内容: 假设我在Go中有一个中间件,我想用自己的值覆盖任何现有的标头。 然后我将其添加到这样的响应链中 不幸的是,如果authHandler或由DefaultServeMux调用处理的任何事情(例如,httputil.ReverseProxy.ServeHTTP),我最终在响应中会有两个Server标头。 我真正想要的是这样的: 但是,ServeHTTP的语义不允许这样做: ServeHTTP
我正在使用改型从我的android应用程序做api调用。但是响应显示带有ok消息的状态代码200。但是调用的数据由HttpClient返回。那么我该如何处理我的呼叫的响应数据呢?这里的回应将是 请求有效载荷 /okHttp.okHttpClient:{“data”:{“email”:“foobar@gmail.com”,“password121”}} 回应: OKHttp.OKHttpClient
我试图在循环中调用请求的rest api。每个调用都是一个。每个api调用返回一个类型为