首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASIHTTPRequest POST iPhone

ASIHTTPRequest POST iPhone
EN

Stack Overflow用户
提问于 2011-06-04 17:07:54
回答 3查看 22.8K关注 0票数 6

这是我试图提交的文本区域的html code的一部分,这个论坛用来输入问题的大部分文本区域。它不工作,没有发送任何东西,我得到的响应类型是

NSHTTPURLResponse: 0x617bb20

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

代码语言:javascript
复制
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更新了代码。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-05 02:29:23

ASIHTTPRequest就是这方面的发展方向。很难理解您所编写的代码到底出了什么问题(除了它看起来像一个同步请求,这是一个禁忌)。

在ASIHTTPRequest中,您可以执行以下操作:

代码语言:javascript
复制
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:someUrl];
[request setRequestMethod:@"POST"];
[request setPostValue:@"..." forKey:@"user"];
[request setPostValue:@"..." forKey:@"password"];

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

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

代码语言:javascript
复制
- (void)requestFinished:(ASIHTTPRequest *)request {
   NSLog(@"Response %d ==> %@", request.responseStatusCode, [request responseString]);
}

如果您愿意,还可以处理其他方法,例如:

代码语言:javascript
复制
- (void)requestStarted:(ASIHTTPRequest *)request;
- (void)requestFailed:(ASIHTTPRequest *)request;

您可以随时从github下载ASIHTTPRequest项目,网址为http://github.com/pokeb/asi-http-request

这些文档位于http://allseeing-i.com/ASIHTTPRequest/,并且是fantastic

希望这能有所帮助!

票数 16
EN

Stack Overflow用户

发布于 2017-01-20 12:39:59

代码语言:javascript
复制
#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

票数 2
EN

Stack Overflow用户

发布于 2011-06-06 02:12:47

我只是想说我让它工作了:)。

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

和这篇文章来看看我的意思

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

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

作为示例,html代码中的隐藏字段之一是:

代码语言:javascript
复制
<input type="hidden" name="version" id="version" value="3">

这将转化为

代码语言:javascript
复制
[request setPostValue:@"3" forKey:@"version"];

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

您可以采用上面的想法,并将其应用于模拟按钮按下

代码语言:javascript
复制
<input type="submit" name="post" id="post" tabindex="56" style="width:150px;font:16px Arial;" value="Post Reply" onc...

代码语言:javascript
复制
[request setPostValue:@"submit" forKey:@"post"];

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6235815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档