如何在url中传递参数?

时间:2015-02-04 07:37:17

标签: ios iphone ios7

我是IOS开发的新手。 我正在请求具有POST方法的Web服务,并在标头中接受两个参数密码和确认。 这是网址 https://abc.xyz.eu/pqr/Api 这是方法 ?API /帐户/ ChangePassword密码= {密码}&安培;确认= {}确认

如何调用此方法 我尝试了很多代码,但得到400,401,404错误

最后我通过使用基本身份验证获得了200个chrome中的状态代码。现在的问题是,我很困惑如何传递基本身份验证和头参数的值 请帮助我

        NSString *UrlWithParameters=[NSString stringWithFormat:@"https://abc.xyz.eu/abc/api/Account/ChangePassword?"];
        NSURL *ServiceURL =[NSURL URLWithString:UrlWithParameters];
        NSMutableURLRequest * request =[NSMutableURLRequest requestWithURL:ServiceURL];

        NSString *post = [NSString stringWithFormat:@"password=%@&confirmation=%@",self.txtNewPassord.text,self.txtConPassord.text];
        NSData* postData = [post dataUsingEncoding:NSUTF8StringEncoding];

        [request setHTTPMethod:@"POST"];

        NSString *authValue = [NSString stringWithFormat:@"Basic %@",self.appDelegate.UserPasswordBase64];
        [request setValue:authValue forHTTPHeaderField:@"Authorization"];
        [request setValue:@"application/json" forHTTPHeaderField:@"accept"];
        [request setValue:@"application/json" forHTTPHeaderField:@"content-type"];

        [request setHTTPBody:postData];

        NSURLResponse *response;
        NSError *err;
        NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];

`

2 个答案:

答案 0 :(得分:0)

如果您收到401错误,则表示您未经授权。 API调用看起来很奇怪,因为您不发送任何授权信息。如果不是您的服务,请首先尝试从浏览器,CLI或任何REST客户端检查此API。如果是您的服务器,请检查服务器日志,它如何尝试路由您的呼叫。例如,问题可能在于URL编码。

答案 1 :(得分:0)

尝试使用AFNetworking,它是最好的iOS网络库(和开源!)

有了它,这可能会成功:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"password": @"xxx", @"confirmation": @"yyy"};
[manager POST:@"https://abc.xyz.eu/pqr/api/Account/ChangePassword" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];