2010-12-04 6 views
6

Im Grunde ist ich eine POST-Anforderung mit einem leeren Datenkörper zu senden:leere Körper in POST in ASIHTTPRequest

ASIHTTPRequest *request [ASIHTTPRequest alloc] init]; 
    [request setURL:[NSURL URLWithString:escapedUrlString]]; 
    [request setRequestMethod:@"POST"]; 
    [request addRequestHeader:@"Content-Type" value:@"application/xml"]; 
    [request startSynchronous]; 

Aber ich bin immer diese Antwort jedes Mal: ​​

Falschen NSStringEncoding Wert 0x0000 erkannt. Angenommen, NSStringEncodingASCII. Wird dieses Kompatibilitäts-Mapping-Verhalten in naher Zukunft stoppen.

Ich frage mich, ob es Pflicht ist, Post-Werte zu setzen.

Antwort

9

Ich habe nicht viel Erfahrung mit dem ASIHTTPRequest Wrapper, aber ich kann Sie initialisiert es mit alloc:init sehen, während die meisten Beispiele Ich habe eine Bequemlichkeit initialiser requestWithURL:(NSURL*)url dh

ASIHTTPRequest *request = [AIHTTPRequest requestWithURL:escapedUrlString]; 

Bei einer Vermutung ich gesehen habe d sagen, dass dieser Komfort-Initializer auch einige der erforderlichen Variablen für Ihre Post-Anfrage setzen wird, einschließlich NSStringEnconding.

Von der ASIHTTPRequest Dokumentation bei http://allseeing-i.com/ASIHTTPRequest/How-to-use#handling_text_encodings

Umgang mit Textcodierungen

ASIHTTPRequest versuchen wird, die Textkodierung der empfangenen Daten aus den Content-Type-Header zu lesen. Wenn eine Textcodierung findet, wird responseEncoding auf die entsprechende NSStringEncoding festgelegt. Wenn eine Textcodierung in der Kopfzeile nicht gefunden wird, wird den Wert defaultResponseEncoding verwenden (diese Standardwerte zu NSISOLatin1StringEncoding).

Wenn Sie anrufen [Anfrage responseString], ASIHTTPRequest wird Versuch, eine Zeichenfolge aus den Daten erstellen sie empfangen, responseen als Quelle Codierung.

+0

Nur um nach der Überprüfung des Codes zu bestätigen, ist dies in der Tat der Fall. Überprüfen Sie die Interface-Datei (ASIHTTPRequest.h) für Details zu Init/Dealloc-Methoden. – Rog

3

Wie Rog sagt, verwenden Sie initWithURL oder requestWithURL. Wie auch immer, in meinem Fall war das Problem, dass ich eine Verbindung zu einem langsamen Server hergestellt habe und die Anfrage abgelaufen ist und der Fehler "Incorrect NSStringEncoding 0x0000 detected" ausgegeben wurde.

Ich löste es mit:

request.timeOutSeconds = 50; 

Sie können mit mehr als 50 Sekunden versuchen, wenn Ihr Server noch langsamer ist.

Verwandte Themen