iOS应用程序中的ai图像识别

iOS应用程序中的ai图像识别,ios,image,request,swift4,image-recognition,Ios,Image,Request,Swift4,Image Recognition,我正在尝试使用Swift 4在iOS应用程序中实现图像识别 这是他们为目标C给出的代码示例: NSDictionary *headers = @{@"Authorization": @"JWT {your JWT token}", @"Content-Type": @"application/x-www-form-urlencoded", @"Accept": @"text/plain"}; UNIUrlConnection *asyncConnection = [[UNIRest post:^

我正在尝试使用Swift 4在iOS应用程序中实现图像识别

这是他们为目标C给出的代码示例:

NSDictionary *headers = @{@"Authorization": @"JWT {your JWT token}", @"Content-Type": @"application/x-www-form-urlencoded", @"Accept": @"text/plain"};
UNIUrlConnection *asyncConnection = [[UNIRest post:^(UNISimpleRequest *request) {
  [request setUrl:@"http://cl-api.vize.ai/{your task ID}?image={path/myimage.png}"];
  [request setHeaders:headers];
}] asundefinedAsync:^(UNIHTTPundefinedResponse *response, NSError *error) {
  NSInteger code = response.code;
  NSDictionary *responseHeaders = response.headers;
  UNIJsonNode *body = response.body;
  NSData *rawBody = response.rawBody;
}];
如您所见,我必须向请求传递一个映像路径。在我的应用程序中,用户可以选择分析添加到项目资产文件夹的默认图片,也可以选择从库添加/拍照

在这个例子中,图像路径应该是什么

以下是我使用Swift 4发出请求的方式,我添加到其中的任何图像路径都会返回“缺少图像或url”响应错误:

let headers: HTTPHeaders = [
    "Authorization": "JWT \(jwtToken)",
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "text/plain"
]
let url = "https://cl-api.vize.ai/\(taskID)?image=\(imagePath)"
Alamofire.request(url, method: .post, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON { response in
    debugPrint(response)
}

非常感谢您的帮助。谢谢

所以我设法使用多部分表单数据找到了解决方案。下面是它的完整代码

func getVizeImageAnalysis(image: UIImage) {
        let headers: HTTPHeaders = [
            "Authorization": "JWT \(jwtToken)",
            "Content-Type": "application/x-www-form-urlencoded",
            "Accept": "text/plain"
        ]
        let url = "https://cl-api.vize.ai/\(taskID)"

        manager.upload(multipartFormData: { multiPartData in
            // Add image
            if let imageData = UIImageJPEGRepresentation(image, 0.8)  {
                multiPartData.append(imageData, withName: "image", fileName: "pickedImage", mimeType: "image/jpeg")
            }

        }, to: url, method: .post, headers: headers, encodingCompletion: {
            encodingResult in
            switch encodingResult {
            case .success(let request, _, _):
                request.responseJSON{ response in
                debugPrint(response)
            }
            case .failure(let encodingError):
                print(encodingError)
            }
        })
    }

你在用阿拉莫菲尔吗?如果是,我将在
HTTPHeaders
manager
上使用未解决的标识符错误
。你知道可能是什么问题吗?我已经用CocoaPods安装了Alamofire。另外,jwtToken是API访问令牌,taskID是任务UIUD,对吗?当我输入用我自己的API标记和任务ID填充这些占位符时,我得到了一个错误:
在整数文字前缀之后应该有一个数字。你也遇到过这种情况吗?@fi12是的,我正在使用Alamofire,请确保初始化管理器:
class YourViewController:UIViewController{let manager:SessionManager(…)必需初始化?(编码器:编码器){让sessionConfiguration=SessionManager.default.session.configuration sessionConfiguration.TimeOutiterValforRequest=20.0 self.manager=SessionManager(configuration:sessionConfiguration)super.init(coder:aDecoder)}(…)}
@fi12是jwtToken是API访问令牌,taskID是task UUID。是否将它们作为字符串添加?