Я пытаюсь использовать Retrofit 2.0 для входа на сайт. Это мой первый раз с Retrofit.
Однако с почтальоном и с сайта я могу успешно войти в систему. Это запрос в хром:
И это мой код:
APIService:
interface APIService {
@FormUrlEncoded
@POST("/account/")
fun login(@Field ("login-ident") username:String,
@Field ("login-pwd") password:String): Call<String>
}
MainActivty:
fun login(username:String, password:String) {
mAPIService?.login(username, password)?.enqueue(object : Callback<String> {
override fun onResponse(call: Call<String>, response: Response<String>) {
if (response.isSuccessful()) {
showResponse(response.body().toString())
Log.e("Tag", "post submitted to API.")
}
}
override fun onFailure(call: Call<String>, t: Throwable) {
Log.e("Tag", "Unable to submit post to API. - "+t.message)
}
})
}
fun showResponse(response: String) {
Log.e("Tag", response)
}
По сути, когда я запускаю свой запрос, в теле ответа я получаю страницу входа в систему, тогда как с помощью chrome или почтальона я получаю страницу пользователя (и это то, что я хочу). Что я делаю не так? Спасибо: D
UPDATE:
Это сгенерированный код почтальона (и он работает, но мой запрос на модернизацию не работает):
POST /account/ HTTP/1.1
Host: www.placeoldersite.it
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Cache-Control: no-cache
Postman-Token: postman token
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="login-ident"
myusername
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="login-pwd"
mypassword
------WebKitFormBoundary7MA4YWxkTrZu0gW--
ОБНОВЛЕНИЕ 2:
Я делаю небольшой скрипт на Python, и он работает, но мой запрос на модернизацию не работает D:
import requests
url = "https://www.myplaceholder.it/account/"
data = {"login-ident":"username", "login-pwd":"password"}
r = requests.post(url, data=data)
print(r.content)
ОБНОВЛЕНИЕ 3:
Я думаю, что проблема в том, что в моем коде Retrofit не обрабатывает куки (в данном случае один куки), и я не могу выполнить вход