2013-02-19 72 views
0

我认为标题解释了它。我可以很好地达到我的api控制器上的Get功能。我可以到达Post方法,但是我的参数(macAddress)为null。我试过这个代码的许多变化在Xcode:IOS到REST-ful MVC Api服务 - [Get]有效,但参数没有通过[Post] 0123到达服务器

 NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",baseURL,controller]]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url 
                 cachePolicy:NSURLRequestUseProtocolCachePolicy 
                timeoutInterval:60.0]; 
[request setHTTPMethod:@"POST"]; 
NSString *postString = @"macAddress=testestest"; 
NSData *myRequestData = [ NSData dataWithBytes: [ postString UTF8String ] length: [ postString length ] ]; 
[request setHTTPBody:myRequestData]; 

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"]; 

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 

和控制器:

public String Post([FromBody]string macAddress) 
    { 
     //...... 
    } 

(我知道,我使用的同步请求和响应零/错误,只是想找出这方面)

感谢您的帮助。

+0

只需对代码快速发表评论。字符串可以更简单的方式转换为数据 - [body dataUsingEncoding:NSUTF8StringEncoding] – 2013-02-19 20:05:27

+0

顺便说一句代码看起来不错。我在我的应用程序中有类似的,它工作完美:) – 2013-02-19 20:07:16

+0

您需要安装嗅探器并检查来自客户端的传出流量。我不认为这个问题在客户端。 – 2013-02-19 20:08:42

回答

1

它看起来像你有你的* postString没有[NSString stringWithFormat方法]。我用我自己的restful API使用下面的代码。

NSString *deviceToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"rsdevicetoken"]; 

NSString *postString = [NSString stringWithFormat:@"token=%@&active=%@&draw=%@&result=%@&message=%@",deviceToken,allNotify, draw, results, message]; 
NSData *postData = [postString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; 

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setURL:[NSURL URLWithString:@"http://www.someurl.com/updateSubscriptions"]]; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPBody:postData]; 

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

希望这会帮助你。

+0

我建立了我的请求来模仿你的以及将字符串更改为 NSString * postString = [NSString stringWithFormat:@“macAddress =%@”,@“testestest”]; 不幸的是,我仍然在服务器端null:( – Jonesopolis 2013-02-19 20:27:08

+0

它与我一样工作吗?试试像这样NSString * postString = [NSString stringWithFormat:@“macAddress = testtesttest”]我认为这可能会解决您的问题 – 2013-02-19 20:29:04

+0

这是我对现在,但还是收到空服务器端 的NSString * postString = [的NSString stringWithFormat:@ “MACADDRESS = testestest”]; 的NSData * myRequestData = [postString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; NSMutableURLRequest * request = [[NSMutableURLRequest alloc] init]; [request setURL:url]; [request setHTTPMethod:@“POST”]; [request setHTTPBody:myRequestData]; NSError *错误; NSURLResponse *响应; NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; – Jonesopolis 2013-02-19 20:36:17

0

这是一个疯狂的猜测,但如果您的macAddress后参数具有以下格式:01:23:45:67:89:ab您需要将':'编码为'%3A'。