2013-03-17 3 views
16

Używam AFJSONRequestOperation żądania serwer i analizować zwracanej odpowiedzi JSON, ale podczas analizowania, mam ten błąd:NSDebugDescription = "Tekst JSON nie zaczął się od tablicy lub obiektu i opcji, aby nie zezwalać na fragmenty.";

NSDebugDescription = "JSON text did not start with array or object and option to allow fragments not set."; 

Sprawdziłem API i to powracającego JSON dane:

header('Content-type: text/json'); 
$arr[] = array("Message" => "update succeeded"); 
echo '{"Result":'.json_encode($arr).'}'; 

Masz pomysł, jak to naprawić?

EDIT

Próbowałem zadzwonić do API z przeglądarki i zawierać wniosek w adresie URL, a więc mam prawidłową odpowiedź JSON:

{"Result":[{"Message":"update succeeded"}]} 
+0

Czy mógłbyś opublikować ciąg JSON odebrany przez 'AFJSONRequestoperation'. –

+0

Witam, JSON dostałem w bloku awarii jest '(null)' – Malloc

+1

można uruchomić api w przeglądarce i zawierać odpowiedź na pytanie? –

Odpowiedz

0

Pierwszą rzeczą, json_encode cały obiekt zamiast włamać się do nich.

drugie, chyba $ arr zawiera wiele elementów (nie wynika z powyższego przykładu), należy initalized jako sposób:

$arr = array("Message" => "update succeeded");

ja nadal nie jestem pewien, co jeszcze może być problem tutaj. Powinieneś powtórzyć, co otrzymała twoja aplikacja, a która powinna wskazywać na problem.

0

Należy użyć dopuszczalnego typu zawartości. w swoim serwisie internetowym, który powinien być tylko zwykłym tekstem.

tutaj jest mój kod swift i naprawiono:

let manager = AFHTTPRequestOperationManager() 

    manager.requestSerializer=AFJSONRequestSerializer() 
    manager.responseSerializer = AFHTTPResponseSerializer(); 

    manager.GET(

     baseURL + (webServiceType as String) + secureParam, 
     parameters:[:], 

     success: 
     { (operation: AFHTTPRequestOperation!, 
      responseObject: AnyObject!) in 
      completion(obj: responseObject) 
     }, 
     failure: 
     { (operation: AFHTTPRequestOperation!, 
      error: NSError!) in 
      completion(obj: nil) 
    }) 
0

Sprawdź dodane/api/url bazowej przed API jak

http: // someurl/yourBasrUrl/api/apiName

0

Aby dokonać prawidłowej odpowiedzi json, kod powinien wyglądać tak:

$response = array(
    "Result" => array(
     "Message" => "update succeeded" 
    ) 
) 

echo json_encode($response); 
Powiązane problemy