【问题标题】:ASIFormDataRequest responseString return nscfstring or nscfconstant stringASIFormDataRequest responseString 返回 nscfstring 或 nscfconstant 字符串
【发布时间】:2012-05-18 13:12:29
【问题描述】:

我正在使用ASIFormDataRequest 调用带有视频文件的web service。如果视频很小,它可以正常工作,但如果视频大约 30 秒或以上,则其响应返回为 __NSCFString 或有时 __NSCFConstantString

我的代码如下。

__block ASIFormDataRequest *request=[[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:APP_APIURL]];

    [request setPostValue:strVal forKey:@"jsonRequest"];
    if (videoData) {
        [request setData:videoData withFileName:videoName andContentType:nil forKey:@"videoFile"];
    }

    [request startSynchronous];
    request.timeOutSeconds=999999999;
    // response 
    NSString *strResponse=[request responseString];

if (strResponse) {
    SBJsonParser *parser=[[SBJsonParser alloc] init];
    NSMutableDictionary *dicData=[[parser objectWithString:strResponse] valueForKey:@"uploadVideo"];

请帮我解决这个问题。

湿婆

【问题讨论】:

  • 对不起,我不明白是什么问题... __NSCFString 和 __NSCFConstantString 仍然是 NSString 对象。
  • 我刚刚更新了我的帖子...如果它返回 __NSCFString 和 __NSCFConstantString 则 json 解析器无法解析它。

标签: iphone objective-c web-services nsstring asihttprequest


【解决方案1】:

这里有几个解决您的问题的方法:

  • 使用自省并检查返回的对象的类。如果你得到一个“常量”字符串,可能不是你所期望的。打印或检查内容。
  • 如果您正在接收视频文件 - 使用 [request responseData] 或更好,请使用 ASIHTTPRequest 库中描述的文件保存技术。如何同时下载文件和解析 json 响应?
  • 使用JSONKit - 恕我直言,最快的 json 解析器。

【讨论】:

  • 感谢您的回复,但我认为这不是 json 解析器的问题。因为 NSString *strResponse=[request responseString];应该返回 nsstring 但它返回 __NSCFString 或 __NSCFConstantString
  • 这可能是由于.....我在辅助线程上调用此函数。使用 MBProgressHUD
  • 嗯,最后一个建议不是直接的解决方案,只是一个建议。尝试在主线程上运行请求,但我没有看到任何原因 - 那里没有 UI 内容,并且 ASIHTTPRequest 总是在需要时调用主线程。您可以使用 ASI 的异步请求或队列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
  • 2015-02-18
  • 2017-09-21
  • 1970-01-01
相关资源
最近更新 更多