Du bist nicht angemeldet.

  • »Plany« ist der Autor dieses Themas

Beiträge: 941

Wohnort: Berlin

Beruf: Application Developer

Hobbys: Ja

  • Private Nachricht senden

1

Dienstag, 18. Oktober 2011, 14:10

HTTP PostBody schließen bei x-www-form-urlencoded

Hoi

ich schreibe gerade an einer SubClass von NSMutableURLRequest wo ich bequem per

Quellcode

1
- (void) addPostValue:(NSString *)value forKey:(NSString *)key;
Post Daten abfeuern kann.

das Ganze funktioniert super mit multipart/form-data ... da beende ich den PostBody mit der boundary + "--" (2 Striche).

aber wie sage ich das bei x-www-form-urlencoded der Body zu ende ist?
hier finde ich leider nix: http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4
da steht nur multipart.

manchmal hab ich das problem das irgendwelche Daten Fragmente (am ende der eigentlichen Daten) am Server mit ankommen.
俺の世界にようこそ

2

Dienstag, 18. Oktober 2011, 14:40

das Ganze funktioniert super mit multipart/form-data ... da beende ich den PostBody mit der boundary + "--" (2 Striche).
Zwei Bindestriche sind eine ausgesprochen ungeeignete Boundary. Der Sinn einer Boundary liegt ja darin, dass sie in den Nutzdaten nicht vorkommt, und bei zwei Bindestrichen würde ich da nicht drauf wetten, sofern Du nicht ganz genau weißt, dass die Daten einem formalen Schema unterliegen, welches das ausschließt.

aber wie sage ich das bei x-www-form-urlencoded der Body zu ende ist?
Mit einem Content-Length-Header.

Carsten

  • »Plany« ist der Autor dieses Themas

Beiträge: 941

Wohnort: Berlin

Beruf: Application Developer

Hobbys: Ja

  • Private Nachricht senden

3

Dienstag, 18. Oktober 2011, 14:45

Zwei Bindestriche sind eine ausgesprochen ungeeignete Boundary.


Quellcode

1
2
3
4
5
-----------------------------20072377098235644401115438165 
Content-Disposition: form-data; name="mem" 

0 
-----------------------------20072377098235644401115438165--


das ist ein der PostBody für mem => 0 ... die Boundary wird random für jeden body generiert.
ich setze nicht nur 2 striche! sondern eine 29 zeichen lange zahl :)


normal setz ich die eigentlich

Quellcode

1
[self setValue:[NSString stringWithFormat:@"%d",[bodyData length]] forHTTPHeaderField: @"Content-Length"];

... mmh da streut mir irgendwas in die Welle >.<
俺の世界にようこそ

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Plany« (18. Oktober 2011, 14:54)


  • »Plany« ist der Autor dieses Themas

Beiträge: 941

Wohnort: Berlin

Beruf: Application Developer

Hobbys: Ja

  • Private Nachricht senden

4

Dienstag, 18. Oktober 2011, 14:49

update:

mmh seit ich ein "CR LF" am ende eingefügt hab komm keine Fragmente mehr an :)

Quellcode

1
2
3
[request addPostValue:@"post" forKey:@"key"];      
        [request addPostValue:@"array1" forKey:@"muh[0]"];
        [request addPostValue:@"array2" forKey:@"muh[1]"];


vorher:

Quellcode

1
2
3
4
5
6
7
8
9
Array(    
    [key] => post
    [muh] => Array
        (
            [0] => array1
            [1] => array2
        )
)
1}*√1	Î√1	Î√1ƒ1ƒ1i*√1


nachher:

Quellcode

1
2
3
4
5
6
7
8
Array(    
    [key] => post
    [muh] => Array
        (
            [0] => array1
            [1] => array2
        )
)
俺の世界にようこそ

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Plany« (18. Oktober 2011, 14:56)


5

Dienstag, 18. Oktober 2011, 14:55

Quellcode

1
-----------------------------20072377098235644401115438165 
Sorry, ich hatte Dein Posting ungenau gelesen: ich dachte, Du würdest NUR »--« als Boundary verwenden ;-)

Carsten

Ähnliche Themen

Social Bookmarks