それでもHttpURLConnectionは画像とファイルを同時にアップロードできませんでしたが、失敗した後、OKHttpのアップロードメソッドを確認しました。
参考ブログ:
https://blog.csdn.net/nsplnpbjy/article/details/104690131
https://blog.csdn.net/yancychas/article/details/78212701
https://blog.csdn.net/gxflh/article/details/81133337?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
OKHttpを使用する考え方はHttpURLConnectionに似ており、主に複数のパラメータを設定する場合、次のコードのようにRequest.Builderを使用できます。
元のアドレス:https://www.cnblogs.com/shenchanghui/p/6407271.html
1 public void call(Subscriber <?super String> subscriber){ 2 MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder(); 3 multipartBodyBuilder.setType(MultipartBody.FORM); 4 // 遍历マップ中すべてのパラメータ到来ビルダー 5 if(params!= null ){ 6 for (String key:params.keySet()){ 7 multipartBodyBuilder.addFormDataPart(key、params.get(key)); 8 } 9 } 10 //ビルダーへのパス内のすべての画像の絶対パスをトラバースし、「upload」などのキーを背景として同意して、複数の画像をキーとして受け入れます 11 if(files!= Null ){ 12 for (File file:files){ 13 multipartBodyBuilder.addFormDataPart(pic_key、 file.getName()、RequestBody.create(MEDIA_TYPE_PNG、file)); 14 } 15 }
ここではビルダーを使用して複数のパラメーターをカプセル化します。
基本的な使用方法のリファレンス:https://www.jianshu.com/p/da4a806e599b
1 MediaType mediaType = MediaType.parse( "text / x-markdown; charset = utf-8" ); 2文字列requestBody = "私はJdqmです。" ; 3要求リクエスト= 新しいRequest.Builder() 4 た.url( "https://api.github.com/markdown/raw" ) 5 .post(RequestBody.create(MEDIATYPE、requestBody)) 6 .build()。 7 OkHttpClient okHttpClient = new OkHttpClient(); 8 okHttpClient.newCall(request).enqueue(new Callback(){ 9 @Override 10 public voidonFailure(Call call、IOException e){ 11 Log.d(TAG、 "onFailure:" + e.getMessage()); 12 } 13 14 @Override 15 public void onResponse(Call call、Response response)throws IOException { 16 Log.d(TAG、response.protocol()+ "" + response.code()+ "" + response.message() ); 17 ヘッダーheaders = response.headers(); 18 for(int i = 0; i <headers.size(); i ++ ){ 19 Log.d(TAG、headers.name(i)+ ":" + headers.value(i)); 20 } 21 Log.d(TAG、 "onResponse:" + response.body()。string()); 22 } 23 });
デフォルトはGETリクエストであることに注意してください。POSTリクエストを使用するには、4行目のstatement.post()が必要です。
次のステップは実際の戦闘ステージです。OKHttpを使用してバックグラウンド機能を実現できるかどうかを確認します。さらに、スプリントの日付が次の月曜日に延長されます。