2012-09-30 12 views
9

AFNetworking framework kullanıyorum ve sunucuya bir form (POST) isteği göndermeniz gerekiyor. Sadece yazı Sending more than one image with AFNetworking tartışılan ne gibi AFHTTPClient içinde multipartFormRequestWithMethod kullanmayı düşününHTTP formu (POST) iOS simüle etmek nasıl takılır

<form id="form1" method="post" action="http://www.whereq.com:8079/answer.m"> 
    <input type="hidden" name="paperid" value="6"> 
    <input type="radio" name="q77" value="1"> 
    <input type="radio" name="q77" value="2"> 
    <input type="text" name="q80"> 
</form> 

: Burada sunucu beklentilerine dair bir örnek verilmektedir. Ancak form verisini "radyo" tipi giriş değeriyle nasıl ekleyeceğimi bilmiyorum.

+0

sunucusu aracılığıyla gelmedi beklentilerine dair sizin örnek benziyor ilgisi nasıl. Ayrıca, AFNetworking ... –

+0

hi obuseme üzerinde bağlı değilseniz, bunu nasıl yapacağınıza dair bir örnek verebilirim, lütfen örneği verin. NSURLConnection ve NSMutableRequest –

+0

kullanarak sorun yok, çözülmüş var, hiçbir şey fantezi ama bazı POST istek parametreleri ekleyerek. –

cevap

22

İşte POST parametrelerini göndermek için NSURLConnection kullanıldığı bir örnek:

İşte
// Note that the URL is the "action" URL parameter from the form. 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.whereq.com:8079/answer.m"]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"]; 
//this is hard coded based on your suggested values, obviously you'd probably need to make this more dynamic based on your application's specific data to send 
NSString *postString = @"paperid=6&q77=2&q80=blah"; 
NSData *data = [postString dataUsingEncoding:NSUTF8StringEncoding]; 
[request setHTTPBody:data]; 
[request setValue:[NSString stringWithFormat:@"%u", [data length]] forHTTPHeaderField:@"Content-Length"]; 
[NSURLConnection connectionWithRequest:request delegate:self]; 
+0

Bir "action" form parametresi (örnekte yaptığınız gibi), "e-posta" ve "parola" nın bir girişi olan URL'mi "action" URL'sine ayarladım, ardından yukarıdakileri kullandım. e-posta/şifre değerlerini (UUEncoded) ve wham'ı eklemek için ilk kez çalıştı! Keşke iki kat oy verebilseydim! –

+0

Diğer alanların nesneleri olup olmadığı nasıl? yani NSString * postString = @ "paperid = 6 & q77 = 2 & q80 = blah & obj = ?????"; - bunu nasıl hallettin? –

5

size POST isteği verileri şöyle de görürdün (tarayıcınızda hata ayıklama paneli kullanarak) bu formu kullanılırken tarayıcı sunucuya gönderir ne bir göz atacak olursak:

paperid=6&q77=2&q80=blah 

Bu, seçilen radyo düğmesinin değer girişi, karşılık gelen POST girişinin değeri olarak kullanılır ve tüm radyo düğmeleri için yalnızca bir giriş alırsınız. (Şu anda seçili olan her biri için bir değer aldığınız geçiş düğmelerinin tersine).

POST dizesinin biçimini anladığınızda, isteği her zamanki gibi ASIFormDataRequest kullanarak oluşturabilmeniz gerekir.

2

STHTTPRequest

STHTTPRequest *r = [STHTTPRequest requestWithURLString:@"http://www.whereq.com:8079/answer.m"]; 

r.POSTDictionary = @{ @"paperid":@"6", @"q77":"1", @"q80":@"hello" }; 

r.completionBlock = ^(NSDictionary *headers, NSString *body) { 
    // ... 
}; 

r.errorBlock = ^(NSError *error) { 
    // ... 
}; 

[r startAsynchronous]; 
+0

İyi değil çünkü postBody kullanılmıyor, sunucu tarafında dizi olsun. Dizi ( [Q80] => merhaba [Çalışma NO] => 6 [q77] => 1 ) param adı olmadan nesneyi göndermek nasıl ? –