2012-05-18 30 views
0

我正在使用ASIFormDataRequest調用帶視頻文件的web service。它工作得很好,如果視頻很小,但如果視頻大約30秒或以上,則其響應返回爲__NSCFString或某時__NSCFConstantStringASIFormDataRequest responseString返回nscfstring或nscfconstant字符串

我的代碼如下。

__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"]; 

請幫我解決這個問題。

Shivam

+0

對不起,我不明白是什麼問題... __NSCFString和__NSCFConstantString仍然是NSString對象。 –

+0

我剛剛更新了我的帖子...如果它返回__NSCFString和__NSCFConstantString然後json解析器不能解析它。 –

回答

0

這裏是你的問題幾種解決方案:

  • 使用反省和檢查返回的對象爲它的類。如果你得到一個「常量」字符串,可能不是你所期望的。打印或檢查它的內容。
  • 如果您正在接收視頻文件 - 使用[request responseData]或更高版本,請使用ASIHTTPRequest庫中描述的文件保存技術。你怎樣才能同時下載文件和解析json響應?
  • 使用JSONKit - 恕我直言,最快的json解析器。
+0

Thansk爲您的答覆,但我不認爲這是json解析器的問題。因爲NSString * strResponse = [request responseString];應返回nsstring,但它返回__NSCFString或__NSCFConstantString –

+0

這可能是問題,由於.....我在輔助線程上調用此函數。使用MBProgressHUD –

+0

那麼,最後的建議不是一個直接的解決方案,只是一個建議。嘗試在主線程上運行請求,但我沒有看到任何原因 - 沒有UI的東西,ASIHTTPRequest總是在需要時調用主線程。您可以使用ASI的異步請求或隊列。 – mspasov