如何将原始数据发送到API

时间:2014-10-01 04:20:54

标签: ios api ios7

我有一个文本字段,我需要将两个数据发送到API。

            NSString *post =[NSString stringWithFormat:@"val1=%@,val2=%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"val1"],val2];
            NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
            NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

            NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
            [request setURL:[NSURL URLWithString:@"http://api.test.com/send"]];
            [request setHTTPMethod:@"POST"];
            [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
            [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
            [request setHTTPBody:postData];

            NSError *error;
            NSURLResponse *response;
            NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
            NSString *str=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
            NSLog(@"log%@",str);
        }

我只需要向API发送原始数据这是我的代码。请检查并告诉我们,谢谢

2 个答案:

答案 0 :(得分:2)

NSData *postData = [someStringToPost dataUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:someURLString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"%d", postData.length] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

NSError *error = nil;
NSHTTPURLResponse *response = nil;
NSData *retData = [NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&error];
if (error)
{
           //error
}
else
{
           //no error
}

试试这个

答案 1 :(得分:0)

您是否尝试过将其转换为NSData并发送?

以下转换:         NSData * data = [NSKeyedArchiver archivedDataWithRootObject:array];

这将为您提供以字节为单位的数据,然后将其传递给正常的网络函数调用。