使用ASIHTTPRequest POST多部分/表单数据

时间:2011-03-07 09:04:40

标签: forms iphone asihttprequest

我是ASIHTTPRequest的新手,我在实现表单方面遇到了问题。 目前我在UIWebForm中使用以下代码,一切正常。

    NSString *body = @"\ 
    <html> \ 
    <head> \ 
    <meta http-equiv=\"Content-Type\" content=\"text/html; 
charset=iso-8859-1\"> \ 
        </head>   \ 
        <body>\ 
        <form name=\"my_form\" action=\"http://www.server.com/ar? 
ca=11_s&id=22630957\" \ 
        method=\"POST\" enctype=\"multipart/form-data\"> \ 
        <input type=\"text\" name=\"name\"  value=\"myname\"> \ 
        <input type=\"text\" name=\"email\" value=\"mym...@gmail.com\"> \ 
    <textarea name=\"body\">My message</textarea> \ 
        <input type=checkbox name=\"sendercc\" value=\"0\"> \ 
    <input type=\"submit\" name=\"send\" value=\"Send\"> \ 
        </table> \ 
        </form> \ 
        </body>\ 
        </html>"; 

应该替换表单的(不工作)代码如下:

        ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL: 
[[[NSURL alloc] initWithString:@"http://www.server.com/ar? 
ca=11_s&id=22630957"] autorelease]]; 
        [request setResponseEncoding:NSISOLatin1StringEncoding]; 
        [request setPostFormat:ASIMultipartFormDataPostFormat]; 
        [request setPostValue:@"myname" forKey:@"name"]; 
        [request setPostValue:@"mymail@gmail.com" forKey:@"email"]; 
        [request setPostValue:@"My message" forKey:@"body"]; 
        [request setPostValue:@"0" forKey:@"sendercc"]; 
        [request startSynchronous]; 

1 个答案:

答案 0 :(得分:1)

你能解释一下它不起作用的更多信息吗?如果检查request.responseString?

,是否从服务器返回错误?

您可能需要为提交按钮添加值,即:

[request setPostValue:@"Sent" forKey:@"send"];

如果这样做无效,请尝试使用CharlesProxy这样的代理来捕获浏览器的工作请求和不工作的iphone请求,并比较它们以寻找任何差异。