我尝试使用python请求将.pmml模型输出到本地opencoring服务器。
这是有效的(来自包含DecisionTreeIris.pmml的目录):
curl -X PUT --data-binary @DecisionTreeIris.pmml -H "Content-type: text/xml" http://localhost:8080/openscoring/model/DecisionTreeIris
这不是:
import requests
file = '/Users/weitzenfeld/IntelliJProjects/openscoring/openscoring-server/etc/DecisionTreeIris.pmml'
r = requests.put('http://localhost:8080/openscoring/model/DecisionTreeIris', files={'file': open(file, 'rb')})
r.text
返回:
u'<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>\n<title>Error 415 </title>\n</head>\n<body>\n<h2>HTTP ERROR: 415</h2>\n<p>Problem accessing /openscoring/model/DecisionTreeIris. Reason:\n<pre> Unsupported Media Type</pre></p>\n<hr /><i><small>Powered by Jetty://</small></i>\n</body>\n</html>\n'
我也尝试过:
r = requests.put('http://localhost:8080/openscoring/model/DecisionTreeIris', files={'file': open(file, 'rb')}, headers={'Content-type': 'text/xml', 'Accept': 'text/xml'})
r.text
返回:
u'<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>\n<title>Error 406 </title>\n</head>\n<body>\n<h2>HTTP ERROR: 406</h2>\n<p>Problem accessing /openscoring/model/DecisionTreeIris. Reason:\n<pre> Not Acceptable</pre></p>\n<hr /><i><small>Powered by Jetty://</small></i>\n</body>\n</html>\n'
请注意,我的python尝试与此问题的接受答案相同:Using Python to PUT PMML。
此外,拥有&gt; 1500代表的人应该考虑制作一个&#39; openscoring&#39;标签。
答案 0 :(得分:0)
您应该检查方法org.openscoring.service.ModelResource#deploy(String, HttpServletRequest)
的注释,以获取有效的请求/响应MIME类型。
第一个请求失败,因为服务器只接受application/xml
和text/xml
个有效负载。第二个请求失败,因为服务器发出application/json
个有效负载,但您的客户端只愿意接受text/xml
个有效负载。
答案 1 :(得分:0)
解决方案是放置数据,而不是文件处理程序:
r = requests.put('http://localhost:8080/openscoring/model/DecisionTreeIris', data=open(file, 'rb'), headers={'Content-type': 'text/xml', 'Accept': 'text/xml'})