将 JSON 发送到 drupal 服务器在目标 C 中给出"Invalid Method"



我正在写一个iPhone应用程序,并试图发送一个POST请求drupal服务器与JSON对象,但它总是返回我

{#错误:真的,"#数据":"无效的方法

我试过如下:

NSMutableURLRequest *urlReq = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://xxxxxxx/services/json"]];
[urlReq setHTTPMethod:@"POST"];
[urlReq setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
NSString *stringBody = @"{data:{"method":"views.get","view_name":"words","args":["wod_businessspotlight"],"limit":365}}";
NSData *dataBody = [stringBody dataUsingEncoding:NSUTF8StringEncoding];
[urlReq setValue:[NSString stringWithFormat:@"%d", [dataBody length]] forHTTPHeaderField:@"Content-Length"];
[urlReq setHTTPBody:dataBody];
NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:urlReq delegate:self];
[con start];

我在iPhone + Drupal + JSON RPC服务器问题上看到过类似的问题,但它没有提到我在哪里可以找到SBJSON类和JSONFragment方法。

我也下载了https://github.com/stig/json-framework/,但找不到JSONFragment方法。**

请帮我解决这个问题。

如果您仍然遇到这个问题,我建议使用ASIHTTPRequest,这使问题变得微不足道。

用于视图的特定示例。你需要发送一些必需的参数:一个哈希,一个域名,一个域时间戳,一个nonce和一个视图名。然后还有其他几个可选参数。

我假设您正在使用services模块,但是如果您使用的是版本3。x,您可以使用DIOS (drupal-ios-sdk),我听说过很多关于它的好东西。但是如果你在2号。或者只是想自己做,这里有一个工作示例:

NSURL *url = [NSURL URLWithString:endpoint]; //endpoint:domain.com/services/json
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"view.get" forKey:@"method"];
[request setPostValue:[hash JSONString] forKey:@"hash"];
[request setPostValue:[domain JSONString] forKey:@"domain_name"];
[request setPostValue:timestamp forKey:@"domain_time_stamp"];
[request setPostValue:[nonce JSONString] forKey:@"nonce"];
[request setPostValue:[viewName JSONString] forKey:@"view_name"];
[request startSynchronous];
NSDictionary *deserializedData = 
           [[[[request responseData] objectFromJSONData] JSONString]
                                     objectFromJSONString];
NSArray *resultList = [deserializedData objectForKey:@"data"];

可以看到,除了方法名之外,只有int以外的数据类型需要JSON编码。我不知道这是不是最好的做法,但到目前为止它对我来说是有效的。(:作为旁注,我使用JSONKit是因为它非常简单,只有两个文件,并且根据主要作者的说法,它在效率方面胜过所有其他工具…

如果你想知道如何做哈希的细节,请告诉我。这是一个痛苦的创建,但我找到了一个很好的小有效的方法来做,我认为。

相关内容

最新更新