POST请求不适用于Python,但适用于Java



我将把java代码转换为python代码。但是登录POST请求无法通过python代码工作。

// Java code
String inputData = “{"lang" : "ko", "loginName" : "kkstar123", "password" : "123123123"}”;
String strUrl = “http://10.110.120.80/management/user/login.json”;
StringBuffer sb = new StringBuffer();
HttpURLConnection conn = (HttpURLConnection) new URL(strUrl).openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Accept", "application/json");                
conn.setRequestProperty("Content-Type", "application/json; charset="UTF-8"");
OutputStream out = conn.getOutputStream(); // if remove OutputStream, it return 404 error
out.write(inputData.getBytes());
out.close();     
System.out.println(conn.getResponseCode());
InputStreamReader in = new InputStreamReader((InputStream)conn.getContent());
BufferedReader br = new BufferedReader(in);
String line;
while ((line = br.readLine()) != null)
sb.append(line).append("n");
System.out.println(sb.toString());

上面写得不错,但是。。以下python代码返回404错误

// python code
import requests
from bs4 import BeautifulSoup
header = {
'Accept': 'application/json',
'Content-Type': 'application/json; charset="UTF-8"',
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Mobile Safari/537.36'
}
payload = {
"lang": "ko",
"loginName": "kkstar123",
"password": "123123123"
}
loginURL = "http://10.110.120.80/management/user/login.json"
with requests.Session() as s:
login_req = s.post(loginURL, data = payload, headers = header)
print(login_req)
print(html)

问题出在哪里?请帮我解决这个问题。(如果我使用selenium,它工作得很好!但我想快速获得请求和响应!所以我尝试使用requests-api(

我不应该为POST请求使用"data"参数。将其更改为json后,它就可以工作了。我想我用JSON将Content-Type添加到头中,所以我应该使用JSON-param。

您是否检查过在浏览器中发送的请求是否包含cookie?如果存在cookie,您需要使用SimpleCookie转换这些cookie,并将其添加到请求的标头中。另外,根据请求创建一个Session对象,这样会更好。

相关内容

  • 没有找到相关文章

最新更新