最后我得到了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">
任何帮助表示赞赏:)
答案 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正常工作。