非推奨メソッドを置き換える方法の例は見つかりませんでした。 okhttp3メインページの例は古いものです。これはその1つです。
public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}
誰かがそれを解決できたら、私はあなたの助けに感謝します。
更新:「com.squareup.okhttp3:okhttp:4.0.1」を使用しています
Java Solution:たとえば、create(String, MediaType)
の代わりにcreate(MediaType, String)
を使用します
Kotlin Solution:拡張関数を使用content.toRequestBody(contentType)
;ファイルタイプfile.asRequestBody(contentType)
注: kotlinを使用していますが、IDEはimport okhttp3.RequestBody.Companion.toRequestBody
のようなクラスまたはメソッドを自動的にインポートしないので、手動でインポートします。 ..それから@Pratyeshによって与えられた例としてそれを使います
詳細:ドキュメント
(Android Studioまたは任意のJetbrainのIDEでは、非推奨のメソッドまたはクラスの解決策は、Ctrlを押しながらcreate(...)
/RequestBody.create
)
Com.squareup.okhttp3:okhttp:4.1.0
MediaType.get("application/json; charset=utf-8")
利用できなくなりました。
代わりに、これは"application/json; charset=utf-8".toMediaTypeOrNull()
を使用する必要があります。
たとえば、_okhttp:4.1.0
_以降のリクエスト本文を作成する方法
_import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody.Companion.toRequestBody
val jsonObject = JSONObject()
jsonObject.put("name", "Ancd test")
jsonObject.put("city", "delhi")
jsonObject.put("age", "23")
val body = jsonObject.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())
_
答えはどこから来ているのだろうと思っている人へ!
すべての代替/解決策(回答で説明)は、対応する非推奨のコードに記載されています! IDE support。例を示します、AndroidStudioまたは任意のJetbrainを使用する場合の非推奨コードRequestBody.create(...,...)
の代替/解決策を確認するにはIDE、単にCtrl
を長押ししてRequestBody.create(...,...)
の上にカーソルを置き、正常にマウスオーバーしたときにそれをクリックします
これらのファイルを手動でインポートする必要があります。これはAndroid studioのバグです。推奨されませんが、これはOkhttp 4.2.2で機能します。
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody.Companion.asRequestBody
そしてとして使用
val file = File("path")
file.asRequestBody("image/jpeg".toMediaTypeOrNull())
okhttp3のバージョン4.0. 以降は非推奨です。
そのバージョンのドキュメントは言う
_@JvmStatic
@Deprecated(
message = "Moved to extension function. Put the 'content' argument first to fix Java",
replaceWith = ReplaceWith(
expression = "content.toRequestBody(contentType)",
imports = ["okhttp3.RequestBody.Companion.toRequestBody"]
),
level = DeprecationLevel.WARNING)
fun create(contentType: MediaType?, content: String) = content.toRequestBody(contentType)
_
私は試したことはありませんが、次のことを実行すれば、あなたは良いことになるはずです。
_package com.example;
import Java.io.IOException;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class Test {
public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
public static void main(String[] args) {
}
String post(String url, String json) throws IOException {
//RequestBody body = RequestBody.create(JSON, json);
RequestBody body = RequestBody.Companion.create(json, JSON);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}
}
_
更新:次の依存バージョンを使用して上記のファイルをコンパイルしようとしましたが、RequestBody.Companion.create(json, JSON)
は非推奨ではないようです。
_<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.0.0</version>
</dependency>
_
ドキュメントをざっと見ただけです。廃止予定ですが、代替案はドキュメントで提供されています。
json.toRequestBody(contentType)があなたのためのトリックを行うはずです。
以下はドキュメントのリンクです:
https://github.com/square/okhttp/blob/master/okhttp/src/main/Java/okhttp3/RequestBody.kt
public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.Companion.create(json, JSON)
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}