iOS ASIFormDataRequest

时间:2012-09-25 15:51:35

标签: objective-c

最后我得到了ASI-xx的工作,所以我没有得到ARC编译错误,也没有其他任何遗漏。

现在我想尝试ASIFormDataRequest,以便能够直接从应用程序登录网站。

这是我所知道的,但它似乎没有成功:

-(void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:YES];

    NSString *str = @"http://mysite.com/ucp.php?module=login";
    NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:@"username" forKey:@"username"];
    [request setPostValue:@"password" forKey:@"password"];
    [request setTimeOutSeconds:120];
    [request setDelegate:self];
    [request startAsynchronous];
    NSLog(@"%@",[request responseString]);
    NSLog(@"%d",[request responseStatusCode]);
}

- (void)viewDidLoad
{
    [super viewDidLoad];


    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 300)];
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://mysite.com"]]];
    [self.view addSubview:webView];
}

如果我删除webview,屏幕上没有任何反应。

以下是NSLog的结果:

(null)
0

我想要POST数据的文本域(网站)具有以下代码:

<input tabindex="1" name="username" id="username" size="25" value="" class="inputbox autowidth" type="text">
<input tabindex="2" name="password" id="password" size="25" value="" class="inputbox autowidth" type="text">

任何帮助表示赞赏:)

2 个答案:

答案 0 :(得分:1)

你调用方法[request startAsynchronous];这个处理请求与主线程分开,所以[request responseString];当它在那里时仍然是空的。

你可以做两件事。 [请求startSynchronous]但这会导致UI停止。

最好的选择是:

- (void)requestFinished:(ASIHTTPRequest *)request
{
   // Use when fetching text data
   NSString *responseString = [request responseString];
}

- (void)requestFailed:(ASIHTTPRequest *)request
{
   NSError *error = [request error];
}

您已经设置了委托,所以这应该有效。

旁注:ASIHTTPRequest是一个旧框架,他们不再为此开发。 AFNetworking是一个很好的替代品。

答案 1 :(得分:0)

您的代码看起来不错但请确保您的网络服务使用Chrome Advanced Rest Client正常工作。