我正在尝试使用 java 和 OkHttp 将声音上传到 myinstants.com。
我使用 Chrome 开发工具查看发出的请求并尝试使用 OkHttp 重新创建它们,但我在登录部分失败了。
Chrome 开发工具告诉我这是表单帖子,内容类型为 application/x-www-form-urlencoded。
我尝试使用以下代码复制帖子:
RequestBody loginBody = new FormBody.Builder()
.add("csrfmiddlewaretoken", token) //this token is comes from inside the <input> tag that is retrieved in the HTML of a normal get request to https://myinstants.com/accounts/login and is diffrent every time you load the page
.add("login", username)
.add("password", password)
.add("remember", "on")
.add("next", "/new/")
.build();
Request login = new Request.Builder()
.url("https://www.myinstants.com/accounts/login/?next=/new/")
.addHeader("cookie", CookieHandler.getCookie()) // cookie that is generated from the "set-cookie" response headers of the get request to https://myinstants.com/accounts/login
.addHeader("content-type", "application/x-www-form-urlencoded")
.post(loginBody)
.build();
Response response = new OkHttpClient().newCall(login).execute();
根据 chrome 开发工具,上述 post 请求的响应应该有几个 set-cookie 响应标头,但它们对我来说不存在。
我不认为问题出在我正在使用的 cookie 上,因为与 chrome 开发工具中的内容进行比较时,cookie 完全匹配(除了您每次访问网站时的一些新内容),所以我认为问题在于表格帖子。任何想法我做错了什么?