【问题标题】:ASIHTTPRequest POST iPhoneASIHTTPRequest POST iPhone
【发布时间】:2011-09-08 07:31:04
【问题描述】:

这是html code 的一部分,我正在尝试提交textarea,这个论坛用于输入问题的textarea。它不起作用,什么都没有发送,我得到的响应类型是

NSHTTPURLResponse: 0x617bb20

虽然我设法让它在登录时工作,但我用 user=%@&pass=%@ 替换了 body=%@

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://forums.whirlpool.net.au%@", replyLink]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setRequestMethod:@"POST"];
[request addRequestHeader:@"Content-Type" value:@"application/xml;charset=UTF-8;"];
[request setPostValue:@"test" forKey:@"body"];
[request setDelegate:self];
[request startAsynchronous];

- (void) requestFinished:(ASIHTTPRequest *)request {
//NSString *responseString = [request responseString];
NSLog(@"Response %d : %@", request.responseStatusCode, [request responseString]);

//NSData *responseData = [request responseData];
}

- (void) requestStarted:(ASIHTTPRequest *) request {
NSLog(@"request started...");
}

- (void) requestFailed:(ASIHTTPRequest *) request {
NSError *error = [request error];
NSLog(@"%@", error);
}

使用 ASIHTTPRequest 更新代码。

【问题讨论】:

  • 不要调用 retainCount。没用。

标签: iphone objective-c ios asihttprequest


【解决方案1】:

ASIHTTPRequest 是这里的方法。很难理解您编写的代码到底有什么问题(除了它看起来像一个同步请求,这是一个禁忌)。

在 ASIHTTPRequest 中你可以这样做:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:someUrl];
[request setRequestMethod:@"POST"];
[request setPostValue:@"..." forKey:@"user"];
[request setPostValue:@"..." forKey:@"password"];

[request setDelegate:self];
[request startAsyncrhonous];

然后,确保你的类符合ASIHTTPRequestDelegate 协议并至少实现这个方法:

- (void)requestFinished:(ASIHTTPRequest *)request {
   NSLog(@"Response %d ==> %@", request.responseStatusCode, [request responseString]);
}

如果您选择,您还可以处理其他方法,例如:

- (void)requestStarted:(ASIHTTPRequest *)request;
- (void)requestFailed:(ASIHTTPRequest *)request;

您可以随时从 github 上的 http://github.com/pokeb/asi-http-request 下载 ASIHTTPRequest 项目。

文档位于http://allseeing-i.com/ASIHTTPRequest/,并且很棒

希望这会有所帮助!

【讨论】:

  • 谢谢本。现在正在努力。我实现了 requestFinished 方法,我得到了 200 的响应代码(根据 ASIHTTPRequest 网站可以),我得到了 html 代码(代码是我试图将文本放入 textarea 文本框中的回复页面,类似于stackoverflows) 在 responseString 中返回,但它不会将数据发布到网站上。
  • 我刚刚注意到我在一个字符串中进行硬编码,所以实际上在 textarea 标签中有一些东西!但是,我似乎仍然没有提交数据。
【解决方案2】:

就像说我成功了:)。

对于那些想要提示并处于我位置的人,请在表单中查找隐藏字段或查看此站点http://www.echoecho.com/htmlforms07.htm

这个帖子看看我的意思

http://www.iphonedevsdk.com/forum/148450-post14.html

对于那些只想获得更直接答案的人,请继续阅读,但请阅读 iphonedevsdk 链接,这是试图找出答案的基本步骤。

例如,html 代码中的隐藏字段之一是:

<input type="hidden" name="version" id="version" value="3">

这将转化为

[request setPostValue:@"3" forKey:@"version"];

“forKey”是html中的“name”字段,“setPostValue”是“html”中的值

你可以把上面的想法应用到模拟按钮按下 来自

<input type="submit" name="post" id="post" tabindex="56" style="width:150px;font:16px Arial;" value="Post Reply" onc...

[request setPostValue:@"submit" forKey:@"post"];

希望对其他人有所帮助:)。

【讨论】:

    【解决方案3】:
    #import "ASIHTTPRequest.h"
    #import "ASIFormDataRequest.h"
    #import "JSON.h"
    #import "JSONKit.h"
    NSURL *url = [NSURL URLWithString:[[NSString stringWithFormat:@"YOUR URL"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    
        ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
        [request setRequestMethod:@"POST"];
    
        [request setPostValue:Email forKey:@"email"];
        [request setPostValue:Password forKey:@"password"];
        [request setDelegate:self];
        [request setUsername:@"signin"];
        [request startAsynchronous];
    #pragma mark- Request Finish
    - (void)requestFailed:(ASIHTTPRequest *)request;
    {
        NSLog(@"**********    RequestFailed     **************%@",request.responseString);
        [SVProgressHUD dismiss];
    
    }
    
    -(void)requestFinished:(ASIHTTPRequest *)request
    {
        SBJSON *parser = [[SBJSON alloc] init];
        NSDictionary *resDict = [parser objectWithString:[request responseString] error:nil];
        if ([[request username] isEqualToString:@"signin"])
        {
    
        }
        [SVProgressHUD dismiss];
    }
    

    AFNetworking 文件:https://drive.google.com/file/d/0B_RDiggCq5U3enh2WUdKaVlRcGM/view?usp=sharing

    ASIHTTPREQUEST 文件:https://drive.google.com/file/d/0B_RDiggCq5U3LUttRm9WSS1KN2s/view?usp=sharing

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多