【发布时间】:2015-12-03 14:31:29
【问题描述】:
据我了解,要使用本网站,我必须将图像转换为 base64 编码图像,然后将其发送到本网站。然后网站会发回一个数字(以小数形式)。
https://docs.indico.io/docs/rest-api-image-analysis
我已尝试使用多个步骤,即尝试更改用于发送文本和接收数字的类似过程。有什么建议吗?
更新:
- (IBAction)press:(id)sender {
//UIImage *imager = photos.image;
NSData *imageData = UIImageJPEGRepresentation(photos.image, 1.0);
NSString *base64Img = [imageData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
//not sure if @"data" or @"data.json" and whether the base64img should be behind it
NSDictionary *parameters = @{@"data":base64Img};
NSMutableString *parameterString = [NSMutableString string];
for (NSString *key in [parameters allKeys]) {
if ([parameterString length]) {
[parameterString appendString:@"&"];
}
[parameterString appendFormat:@"%@=%@", key, parameters[key]];
NSURL *url = [NSURL URLWithString:@"http://apiv2.indico.io/contentfiltering?key='17767cb46eb4b4f568832be2c953022b"];
NSURLSession *session = [NSURLSession sharedSession];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[parameterString dataUsingEncoding:NSUTF8StringEncoding]];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (!error) {
if ([data length]) {
NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
//GET RESULT;
NSLog(@"A %@", parameters[@"results"]);
}
} else {
NSLog(@"%@", error);
}
}];
[task resume];
}
我得到的结果通常返回为(null)
【问题讨论】:
-
你到底卡在哪一部分?发布您迄今为止尝试过的任何相关代码
-
如果你在你的请求对象创建后放置一个断点,将请求对象中的 url 复制粘贴到你的浏览器中,看看响应是否是你所期望的,否则你的 url 可能构造不正确
-
您的请求正文似乎不是 json 格式,您可能需要 JSONSerialize 您的
parameters字典而不是尝试对其进行 url 编码 -
@robert 我注意到您在 url(参数)中的键之前有一个单引号。那不应该在那里吧?尤其是如果没有相应的结束引号。
标签: ios objective-c base64 indico