将数据发布到WS

时间:2016-08-02 09:21:39

标签: ios objective-c

我尝试将新数据发布到ws但每次都发生错误 我需要

每次1通过用户名和密码

使用带API KEY的AES256对数据进行2次编码

代码:

- (IBAction)AddTicket:(id)sender {


         [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

    NSURL *URL = [[NSURL alloc] initWithString:@"http://dev.enano-tech.com/api/Ticket"];

    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"id",@"1",@"idProject",@"1",@"idTicketType",@"nameo",@"name",@"nameo",@"description", @"1",@"idStatus",@"2016-06-23 15:20:49",@"creationDateTime", nil];

    NSData *dataToPost = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil];
     NSData *final =[dataToPost AES256EncryptWithKey:@"02b6e206868660a0d59d2e51a11fdcd6"];
  //
    NSLog(@"postData1e == %@",final);
     NSLog(@"final %@",dataToPost);

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
    [request setHTTPMethod:@"POST"];

    [request addValue:@"CURLAUTH_BASIC" forHTTPHeaderField:@"CURLOPT_HTTPAUTH"];


    [request addValue:@"Basic YWRtaW46YWRtaW5hZG1pbg==" forHTTPHeaderField:@"authorization"];

    [request addValue:@"admin:adminadmin" forHTTPHeaderField:@"CURLOPT_USERPWD"];

    [request addValue:@"true" forHTTPHeaderField:@"CURLOPT_RETURNTRANSFER"];

    [request addValue:@"false" forHTTPHeaderField:@"CURLOPT_SSL_VERIFYPEER"];

    [request addValue:@"POST" forHTTPHeaderField:@"CURLOPT_CUSTOMREQUES"];

    [request addValue:@"true" forHTTPHeaderField:@"CURLOPT_POST"];

    [request addValue:@"false" forHTTPHeaderField:@"CURLOPT_POSTFIELDS"];

    [request setHTTPBody:final];

    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];

    NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

        NSString *result = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        NSString *str = [[NSString alloc]initWithData:final encoding:NSUTF8StringEncoding];

        NSLog(@"data  %@",data);
        NSLog(@"respoce  %@",response);
        NSLog(@"result == %@",result);
     }];

    [postDataTask resume];
}

响应:

2016-08-02 15:06:47.768投影仪[3936:1619429]结果== {"错误":" API查询无效","消息&#34 ;:"'数据'没有为方法POST正确编码。请求正确的API KEY"}

这是api的文档:

enter image description here

1 个答案:

答案 0 :(得分:0)

您的网络服务器缺失"数据"来自网站。要解决此问题,您需要将该字段添加到表单中或找到正确的字段名称(区分大小写)