Objective-C HTTP POST请求

9 浏览
0 Comments

Objective-C HTTP POST请求

我正在使用一个使用HTTP的短信网关。我根据stackoverflow等教程和问题创建了一个请求,但是有些问题。当我手动输入URL时,可以正常使用网关,但是以编程方式无法使用,所以我认为可能是我的代码有问题。感谢任何帮助!

NSString *post = [NSString stringWithFormat:@"user=%@&password=%@&api_id=%@&to=%@&text=%@",_username,_password,_apiID,[_numbers componentsJoinedByString:@","],_txtMsg.text];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://api.mySmsGateWay.com/http/sendmsg"]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:postData];
NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *responseCode = nil;
NSData *oResponseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&responseCode error:&error];
if([responseCode statusCode] != 200){
    NSLog(@"获取错误,HTTP状态码 %i", [responseCode statusCode]);
}
NSLog (@"%@", [[NSString alloc] initWithData:oResponseData encoding:NSUTF8StringEncoding]);

0
0 Comments

Objective-C HTTP POST请求的问题可能出现的原因是网络请求的发送不成功,或者服务器返回的数据解析失败。解决方法可以是检查网络连接是否正常,或者检查服务器返回的数据是否符合预期格式。

在上述代码中,首先创建了一个NSMutableURLRequest对象,指定了请求的URL。然后通过拼接字符串的方式,将需要传递的参数拼接成一个字符串userUpdate。

接下来,设置了请求的方法为POST,并将字符串转换为NSData类型的数据,并将其应用到请求的body中。

然后,使用NSURLSession发送请求,并在请求完成后的回调中处理服务器返回的数据。首先判断HTTP状态码是否为200,如果是则解析返回的数据,并根据解析后的数据判断请求是否成功。

如果HTTP状态码不是200,则输出错误提示。

因此,可能出现的问题是网络请求不成功或者服务器返回的数据解析失败。解决方法可以是检查网络连接是否正常,或者检查服务器返回的数据格式是否正确。

0
0 Comments

Objective-C HTTP POST Request的问题出现的原因是无法成功发送HTTP POST请求。可能的原因是参数字符串(parameterString)的格式不正确,或者请求的URL地址有误。

解决方法是检查参数字符串(parameterString)的格式,确保所有参数的值都被正确传递,并且使用正确的分隔符。另外,还需要确认请求的URL地址是否正确,以确保能够成功连接到服务器。

以下是修复问题的可能解决方法:

1. 检查参数字符串(parameterString)的格式,确保所有参数的值都被正确传递,并使用正确的分隔符。例如,确保_username、_password、_apiID、_numbers和_txtMsg.text的值都被正确传递,并使用正确的分隔符连接起来。

2. 确认请求的URL地址是否正确。检查urlString的值,确保它指向正确的API地址。

3. 检查HTTP请求的方法是否正确设置为POST。确保使用[request setHTTPMethod:@"POST"]来设置HTTP请求的方法。

4. 确认请求的URL地址是否正确设置到NSMutableURLRequest对象中。使用[request setURL:url]来设置URL地址。

5. 确保设置正确的Content-Type头信息。使用[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"]来设置Content-Type头信息。

6. 检查参数字符串(parameterString)是否正确转换为NSData对象。使用[parameterString dataUsingEncoding:NSUTF8StringEncoding]来转换参数字符串为NSData对象,并将其设置为HTTP请求的HTTPBody。

7. 检查是否成功发送HTTP请求并获取响应数据。使用[NSURLConnection sendSynchronousRequest:returningResponse:error:]方法发送HTTP请求,并将返回的数据转换为NSDictionary对象。

通过检查和调整上述步骤,应该能够解决Objective-C HTTP POST Request的问题,成功发送HTTP POST请求并获取响应数据。

0