Python SPOJ命令行提交:POST方法中包括什么?
现在我正在编写一个允许从命令行向提交代码的代码片段,例如Python SPOJ命令行提交:POST方法中包括什么?,python,post,Python,Post,现在我正在编写一个允许从命令行向提交代码的代码片段,例如pythonspoj_cl.py test.cpp 我知道我需要用指定的参数和cookie将POST请求发送到相应的URL,但我仍然不知道应该在其中包含哪些参数。现在,我正在尝试一种错误的方法,这似乎不是很有效。我的问题是: 如何系统地检查发送POST请求时要包含哪些参数 如何立即检查我发送的POST请求是否成功?我可以想到的一种方法是获取提交页面的内容,但最好直接检查请求 下面是我正在编写的代码片段。希望它应该是可读的 import re
pythonspoj_cl.py test.cpp
我知道我需要用指定的参数和cookie将POST请求发送到相应的URL,但我仍然不知道应该在其中包含哪些参数。现在,我正在尝试一种错误的方法,这似乎不是很有效。我的问题是:
import requests, sys
# if __name__ == "__main__":
base_url = "http://spoj.com"
autologin_hash = "*************" # Your user hash, taken from cookie
autologin_login = "************" # Your user name
session_id = "************" # Login session, can be retrieved when logged in
cookies_info = {
"autologin_login": autologin_login,
"autologin_hash": autologin_hash
}
ext_id = {
"cpp": "1"
}
filename = "test.cpp"
problem_name = str(filename.split(".")[0]).upper()
extension = filename.split(".")[1]
submit_url = base_url + "/submit/"
parts = {
"PHPSESSID": session_id,
"action": "/submit/complete",
"file": open(filename, "rb"),
"subm_file": "",
"lang": ext_id[extension],
"problemcode": problem_name
}
requests.post(submit_url,
params={"PHPSESSID": session_id},
files=parts,
cookies=cookies_info)
print "Submission sent!"
webpage = requests.get(form_url, params={"PHPSESSID": session_id}, cookies=cookies_info)
html = BeautifulSoup(webpage.text)
form = html.find('form')
inputs = form.findAll('input')
names = []
for i in inputs:
names.append(i['name'])
200
# Make the request
r = requests.post(submit_url,
params={"PHPSESSID": session_id},
files=parts,
cookies=cookies_info)
# Check the response code
if r.status_code == '200':
print "Submission successful!"
else:
print "Submission met a status code of: %s" % r.status_code
我应该澄清第二部分,问题是,即使我发送了一个没有完整参数的POST请求,我仍然得到200个响应,但没有成功提交。啊,在这种情况下,你可能不得不在结果页上搜索UI错误。