2010-05-05 51 views
0
NSString *reqURL = [NSString stringWithFormat:@"%@/login",SERVER_URL]; 

    NSMutableURLRequest *req = [[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:reqURL]]; 
    [req setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"]; 


    NSData *myRequestData = [NSData dataWithBytes:[@"username=whatever&password=whatever" UTF8String] length: [@"username=whatever&password=whatever" length]]; 
    [req setHTTPMethod: @"POST"]; 
    [req setHTTPBody: myRequestData]; 
    NSData *returnData = [NSURLConnection sendSynchronousRequest:req returningResponse: nil error: nil]; 
    NSString *html = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 

我從另一個問題中得到了這段代碼。但是如果有多個提交按鈕會發生什麼情況。我真的不知道如何提出這個問題。這種情況的一個例子是在這個網站的註銷頁面上。沒有字段可以輸入數據,但有2個提交按鈕。POST和表單上的多個提交按鈕

我如何使用像上面的代碼的按鈕中的一個「模擬點擊」(所以不使用一個UIWebView)

+0

第一條規則iPhone,你是不是在談論iPhone。 (只是開玩笑,但蘋果讓它感覺這樣) – 2010-05-05 19:20:20

+0

對不起,我真的不明白 – 2010-05-05 19:36:21

回答

0

方式的形式通常會告訴哪個按鈕被按下是通過命名他們的按鈕和檢查值。簡單地說,接收表單數據的基本頁面將通過檢查是否($ _POST ['submit'] ==「Send!」)來檢查表單是否被提交,這通過按下按鈕告訴頁面用戶到達那裏。決定按下哪個按鈕時使用相同的概念。

if($ _POST [「submit」] ==「Send!」)addDataToDB();
else if($ _POST [「submit」] ==「Update!」)updateUser();
else if($ _POST [「submit」] ==「Remove me!」)removeUser();

所以現在,你需要做的是檢查表格的html頁面的來源,並找出你想要模擬的提交按鈕的名稱和值,並將該數據添加到您的請求中的POST正文數據

更新:糟糕!誤解了你的問題,認爲你的意思是在一個頁面上以一種形式提交多個按鈕,但現在我認爲你的意思是一種形式轉到另一個「確認」形式......在你的didRecieveData委託方法中,你需要存儲所有你得到的html並且在您的didFinishLoading委託方法中,您需要提取任何隱藏的字段名稱&值,然後創建一個新請求,將它們作爲POST數據,並將url作爲表單的「操作」網址

+0

如果一個提交按鈕有一個值,一個沒有? – 2010-05-05 20:06:46

+0

好吧,如果您嘗試在一個表單上容納多個提交按鈕,那麼您仍然只需將按鈕名稱和值添加到您的POST數據中。即使這個價值不算什麼。只要變量設置爲 – casey 2010-05-05 20:13:11

+0

「以爲你的意思是在一個頁面上以一種形式提交多個按鈕」不,這就是我的意思:) – 2010-05-05 21:10:40