ios - 将 Base 64 图像字符串 POST 到 iOS 上的服务器

标签 ios objective-c base64 indico

据我了解,要使用该网站,我必须将图像转换为 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)

最佳答案

也许可以尝试一下

NSDictionary *parameters = @{@"data":base64Img};

NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters
                   options:nil
                     error:&error];

//do some error checking

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:jsonData];

//...

这只是我的想法,所以可能需要一些调整

关于ios - 将 Base 64 图像字符串 POST 到 iOS 上的服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32448761/

相关文章:

ios - 将 Metal 深度缓冲区与场景套件渲染集成

ios - currentAdvice.adviceInstruction 返回奇怪的结果

访问电话簿时 ios 内存泄漏

javascript - 从图像 URL 转换时 Base64 图像未打开

python - 通过base64上传文件

ios - 从 Firestore Swift 获取文档 ID

iphone - 在 iPhone 应用程序中记录错误/事件的最佳做法是什么?

objective-c - 显示错误的当前时间

ios - 如何从 plist 读取到 NSString

java - 使用 Base64 对 ORMLITE 中的文本进行编码/解码