2016-09-20 1 views
2

Я использую Moya для обработки связи между моим быстрым приложением и API, я могу отправлять и получать данные, но не может опубликовать файл апи сервера, после мой кодне удалось загрузить файл RXSwift Moya MULTIPART

enum TestApi { 
    ... 
    case PostTest(obj: [String: AnyObject]) 
    ... 
} 

extension TestApi: TargetType { 

    var baseURL: NSURL { 
     switch self { 
      case .PostTest: 
       return NSURL(string: "http://192.168.9.121:3000")! 
     } 
    } 

    var path: String { 
     switch self { 
      case .PostTest: 
       return "/api/file" 
     } 
    } 

    var method: Moya.Method { 
     switch self { 
      case .PostTest: 
       return .POST 
     } 
    } 

    var parameters: [String: AnyObject]? { 
     switch self { 
      case .PostTest(let obj): 
       return ["image": obj["image"]!] 
     } 
    } 

    var sampleData: NSData { 
     return "".dataUsingEncoding(NSUTF8StringEncoding)! 
    } 

    var multipartBody: [MultipartFormData]? { 
     switch self { 
      case .PostTest(let multipartData): 

       guard let image = multipartData["image"] as? [NSData] else { return[] } 

       let formData: [MultipartFormData] = image.map{MultipartFormData(provider: .Data($0), name: "images", mimeType: "image/jpeg", fileName: "photo.jpg")} 
       return formData 


      default: 
       return [] 
     } 
    } 
} 

и после так я назвал

return testApiProvider.request(.PostTest(obj: _file)).debug().mapJSON().map({ JSON -> EKResponse? in 
    return Mapper<EKResponse>().map(JSON) 
}) 

Я не не получают никакого ответа и не удар был направлен на апи сервер

ответ

1

подписка отсутствует в коде вызова. Это не проблема Moya, а проблема с Reactive Extensions. следующий .subscribeNext { _ in } сосредоточил свой вопрос

return testApiProvider 
    .request(.PostTest(obj: _file)) 
    .debug() 
    .mapJSON() 
    .map({ JSON -> EKResponse? in 
     return Mapper<EKResponse>().map(JSON) 
    }) 
    .subscribeNext { _ in } 
2

Multipart тело осуждается в Мойя 8.0.0. Вместо этого используйте задачу для загрузки.

Проверить этот вопрос:

Moya multipart upload target

Смежные вопросы