gpt4 book ai didi

ios - NSMutableURLRequest 转换为 ASIFormDataRequest

转载 作者:行者123 更新时间:2023-11-28 17:33:38 28 4
gpt4 key购买 nike

我已经写了fellowing代码:

NSString *urlString = [NSString stringWithFormat:ADDRESS,action];
postStr = @"user_name=Thomas Tan&phone=01234567891&password=123456";
NSData *myRequestData = [NSData dataWithBytes:[postStr UTF8String] length:[postStr length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody: myRequestData];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *responseString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSLog(@"%@",responseString);

很好用,但是现在我想用asihttprequest框架,那么上面的代码怎么改,我写了代码,但是不能得到正确的结果,只是得到服务器的错误信息,请问这是怎么回事问题?

NSString *urlString = [NSString stringWithFormat:ADDRESS,action];

NSURL *url = [NSURL URLWithString:urlString];
ASIFormDataRequest *requeset = [ASIFormDataRequest requestWithURL:url];
[requeset setRequestMethod:@"POST"];
[requeset setPostValue:@"Thomas Tan" forKey:@"user_name"];
[requeset setPostValue:@"01234567891" forKey:@"phone"];
[requeset setPostValue:@"123456" forKey:@"password"];
[requeset startSynchronous];
NSError *error = [requeset error];
if (!error) {
NSString *re = [requeset responseString];
NSLog(@"%@",re);
}
NSLog(@"%@",error);

提前致谢。

更新:

NSString *urlString = [NSString stringWithFormat:ADDRESS,action];
NSURL *url = [NSURL URLWithString:urlString];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setRequestMethod:@"POST"];
[request appendPostData:[@"user_name=Thomas Tan&phone=01234567891&password=123456" dataUsingEncoding:NSUTF8StringEncoding]];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSString *re = [request responseString];
NSLog(@"%@",re);
}
NSLog(@"%@",error);

我用上面的代码,也得不到同样的结果,error不为nil。

最佳答案

您的 ASIHTTP 代码与 NSURLConnection 代码做的事情不同。ASIFormDataRequest 将自动:

这通常正是您想要的,但是如果您使用 NSURLConnection 代码获得正确的行为而使用 ASIHTTP 获得不正确的行为,那么您需要更改为 custom ASIHTTP POST 并使用 ASIHTTPRequest,而不是 ASIHTTPFormDataRequest,然后手动设置 Conten-输入回 application/x-www-form-urlencoded:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setRequestMethod:@"POST"];
[request addRequestHeader:@"Content-Type" value:@"application/x-www-form-urlencoded"];
[request appendPostData:[@"user_name=Thomas Tan&phone=01234567891&password=123456" dataUsingEncoding:NSUTF8StringEncoding]];

这样做,并使用 Wireshark 准确检查发送到服务器的内容,我可以看到发送的 POST 数据仍然不完全相同(左边是 ASIHTTP,右边是 NSURLConnection):

post diff

但内容类型、长度和实际数据是相同的。此时,我希望您的服务器返回相同的结果。如果仍然不匹配,您可以编辑 ASIhTTP 请求参数以匹配。

关于ios - NSMutableURLRequest 转换为 ASIFormDataRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10468116/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com