AFNetworking serialisiert den Schrägstrich, wodurch die JSON-Nutzdaten ungültig werden

9

Ich verwende AFNetworking 2.0.

In AFNetworking , AFHTTPRequestOperationManager Objekt hat eine API:

%Vor%

Es akzeptiert NSDictionary als Parameter für die JSON Payload, die wir an den Server "POST" senden möchten. In meiner Payload habe ich folgendes Schlüssel-Wert-Paar:

"buttonActionParam":"/catalog/special/international-calling"

Durch die Veröffentlichung dieses Payload-Servers wird ungültiges JSON zurückgegeben. Mit Blick auf die Nutzlast auf der Serverseite wurde mir klar, dass AFNetworking tatsächlich sendet:

"buttonActionParam":"\/catalog\/special\/international-calling".

Ich weiß, dass die AFNetworking Bibliothek die Klassenmethode NSJSONSerialization von -dataWithJSONObject: verwendet, die das verursacht. Meine Frage ist:

Q. Wie umgehen Sie dieses Problem?

    
Deborshi Saha 09.10.2015, 03:03
quelle

1 Antwort

1

Dies ist ein bekanntes Problem. Es verhält sich tatsächlich wie vorgesehen (siehe Ссылка ).

Es gibt 3 mögliche Lösungen:

  1. Machen Sie Ihren Server auf die Möglichkeit aufmerksam, dass Zeichenfolgen maskiert werden können. Im Allgemeinen ist dies die beste Lösung.

  2. Verwenden Sie einen anderen JSON-Encoder (z. B. SBJson ) und codieren Sie das Objekt in NSData , anstatt den standardmäßigen AFNetworking-Serializer zu verwenden .

  3. Kodieren Sie mit NSJSONSerialization und konvertieren Sie dann die resultierenden Daten in ein NSString (mit NSUTF8StringEncoding ), bereinigen Sie es und konvertieren Sie es zurück in NSData . Auch das müssen Sie tun, bevor Sie das Objekt an AFNetworking übergeben.

Am besten implementieren Sie 2 oder 3, indem Sie eine benutzerdefinierte requestSerializer für die Instanz AFHTTPSessionManager festlegen. Zum Beispiel finden Sie diese Antwort für ein Beispiel zur Implementierung von 3 (beachten Sie, dass es in Swift ist).

    
Sulthan 13.10.2015 23:54
quelle