我不知道Ruby on rails
我有一项任务是使用Ruby on rails
创建网络服务。我正在尝试AFNetworking和NSURLConnection,但没有得到回应。
TIMESTAMP_KEY = '6ad3e2c0ffa4a89217e0'
SECRET_KEY = 'fd83be9e64ddec6ee8344708a189d039ad9e9d51'
HOST = 'http://em.dev.apb.com
URL = 'company_users/login'
他们说上面的参数是预定义的,它的ruby代码如下:
1 params = []
2 sorted_params = params.sort.join
3 puts "sorted_params=#{sorted_params}"
4 digest = Digest::SHA1.hexdigest("#{timestamp}#{TIMESTAMP_KEY}")
5 puts "digest=#{digest}"
6 puts "SHA1(#{URL}#{sorted_params}#{SECRET_KEY}#{digest})"
7 signature = Digest::SHA1.hexdigest("#{URL}#{sorted_params}#{SECRET_KEY}#{digest}")
puts "#{HOST}#{URL}"
response = RestClient.post "#{HOST}/#{URL}/#{signature}/#{timestamp}", :email => email, :password => password
我不知道如何在目标C中获得响应:
我正在尝试AFnetworking
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSString *signature =[self sha1:@"fd83be9e64ddec6ee8344708a189d039ad9e9d51"];
NSString *timestep =[self sha1:@"6ad3e2c0ffa4a89217e0"];
NSDictionary *params = @{@"email": @"abc@superuser.com",@"password": @"aaa111"};
NSLog(@"%@",params);
NSString *url =[NSString stringWithFormat:@"http://em.dev.abc.com/company_users/login/%@/%@",signature,timestep];
[manager POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
我得到了这个Link
所以我使用这个方法
-(NSString*) sha1:(NSString*)input
{
const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:input.length];
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(data.bytes, data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
}
每次我将此输出视为错误,如:
错误:错误域= NSCocoaErrorDomain代码= 3840&#34;操作无法完成。 (可可误差3840。)&#34; (JSON文本不是以数组或对象和选项开头,以允许未设置片段。)UserInfo = 0x8c56190 {NSDebugDescription = JSON文本不以数组或对象开头,并且选项允许未设置片段。
答案 0 :(得分:2)
从您收到的错误代码:
JSON text did not start with array or object and option to allow fragments not set
看起来你的请求或服务器响应都是无效的JSON。
您确定要发布
的有效JSON结构吗?{
"email": "myemail@test.com",
"password": "mypassword"
}
到远程主机?您确定要发布的网址是否正确?您是否尝试使用Postman等工具测试网址?
答案 1 :(得分:0)
从错误消息中,您似乎没有获得Valid JSON,请求ruby开发人员再次检查它,也可以使用@ mcfinnigan
提到的工具,检查您从Web获得的响应服务