iOSアプリ開発にて、HTTPクライアントライブラリであるalamofireを使用して、JsonベースのAPIに対して、画像をマルチパートでアップロードする実行する際のコードを以下に載せたのですが、2点期待しない動作が発生しています。
⓵ アップロードを実行した直後にサーバーがJsonを返す前にresultが返ってきてしまう。
⓶ ⓵の動作よりresultのresponseはnilである。
一番理解できないのが⓵の点です。
サーバーの処理が終わる前になぜ、クライアント側ではすぐ結果を返してしまうのでしょうか?
Alamofire自体のコードは正しいと思いますし、サーバー側の実装も悪くないと思います。なぜか言うと以下のカールコマンドでは正常に動く為です。
そのcurlコマンドがこちらです。
ただマルチパートそのものについての理解はあまり無いです。
ご回答宜しくお願い致します。
curl
1curl -iv -X POST 'localhost/api/v1/users/update_photo' -F "key1=value2" -F "key2=value2" -H "session_key:valval" -F data=image.jpg 2
alamofire
1upload(multipartFormData: {[weak self] (formData) in 2 formData.append(data, withName: "data", fileName: "data.png", mimeType: "image/png") 3 if let me = self { 4 for (key, value) in me.commonParams { 5 formData.append(value.data(using: String.Encoding.utf8)!, withName: key) 6 } 7 } 8 }, 9 to: endpoint, 10 method: .post, 11 headers: makeRequestHeader() 12 .merging(["Content-Type":"application/json"], uniquingKeysWith: { (old, new) -> String in 13 new 14 }) 15 ) { (result) in 16 switch result { 17 case .success(let request, _, _): 18 print("success") 19 print(request.request) 20 print(request.response) 21 case .failure(let err): 22 print("failure") 23 print(err) 24 } 25 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。