[尝试将此curl命令转换为python。
curl -u admin:xxxxxxxx -F file=@"package.zip" -F name="package.zip" -F force=true -F install=true http://host:port/crx/packmgr/service.jsp
尝试使用此方法,获得200成功代码,但打印响应文本并查看服务器显示上传无效。有人可以告诉我我在做什么错吗?
import requests
files = {
'file': ('package.zip', open('package.zip', 'rb')),
'name': (None, 'package.zip'),
'force': (None, 'true'),
'install': (None, 'true'),
}
response = requests.post('http://host:port/crx/packmgr/service.jsp', files=files, auth=('admin', 'xxxxxxxx'))
print(response.headers)
print(response.text)
我认为您缺少导入基本身份验证的权限
from requests.auth import HTTPBasicAuth
response = requests.post('http://host:port/crx/packmgr/service.jsp',
files=files, auth=HTTPBasicAuth('admin', '****'))
更新:
import requests
from requests.auth import HTTPBasicAuth
url = 'http://localhost:4502/crx/packmgr/service.jsp'
files = { 'file': ('mypackage.zip',
open('/Users/zospakir/Projects/mypackage.zip', 'rb'),
'application/zip')}
data = dict(name='mypackage.zip', force='true',install='true')
response = requests.post(url, files=files, data=data, auth=('admin',
'***'))
想通了。
问题在于如何解析源文件。
datafile=fullfile + "/" + filename
url = "http://{}:{}/crx/packmgr/service.jsp".format(server,port)
form_data = dict(
file=(filename, open(datafile, 'rb'), 'application/zip', dict()),
name=package.rstrip('.zip'),
strict=True,
force=(None, 'true'),
install=(None, 'true')
)
resp = requests.post(url, auth=('admin', passwd), files=form_data)
if resp.status_code == 200:
print(resp.headers)
print(resp.text)
print('Success!... Response code 200')
status = "Upload of " + package + " to " + url + "successful"
package_location=pkg_group(resp.text)
package_path=package_location + "/" + package
#mailer.send(status,resp.text)
else:
print(resp.headers)
print(resp.text)
status='Upload of ' + package + 'Error detected!'
sys.exit(1)