我有以下代码可在Python中完美运行:
login_data = {'identifier': '[email protected]', 'password': 'Password'}
url = "https://www.duolingo.com/2017-06-30/login?fields="
p = requests.post(url, data = json.dumps(login_data))
if p.status_code is 200:
print("SUCCESS")
else:
print("ERROR")
我想使用OkHttp将其转换为Java,以便能够在Android Studio中实现。我已经编写了以下代码,但是给出Status Code: 422
,根据Google的说法,它表示“不可处理的实体:
OkHttpClient client = new OkHttpClient();
String url = "https://www.duolingo.com/2017-06-30/login?fields=";
String login_data = "{\"identifier\": \"[email protected]\", \"password\": \"Password\"";
RequestBody body = RequestBody.create(login_data, MediaType.parse("application/json"));
Request postRequest = new Request.Builder()
.url(url)
.post(body)
.build();
client.newCall(postRequest).enqueue(new Callback()
{
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e)
{
Log.i("TAG", "ERROR - " + e.getMessage());
}
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException
{
if (response.isSuccessful())
{
Log.i("LOG", "SUCCESS - " + response.body().string());
}
else
{
Log.i("LOG", "FAILED. Status Code: " + String.valueOf(response.code));
}
}
});
感谢所有帮助!
在Java实现中,请求正文中缺少右括号。
"{\"identifier\": \"[email protected]\", \"password\": \"Password\"}"