2014-10-30 2 views
0

Я пытаюсь использовать запросы python для того, чтобы PUT использовать модель .pmml для локального сервера opencoring.
Это работает (из каталога, содержащего DecisionTreeIris.pmml):Как использовать запросы python для PUT pml-модели для открывания

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' 

Обратите внимание, что мой питон попытка такой же, как в принятом ответ на этот вопрос: Using Python to PUT PMML.

Кроме того, кто-то с репутацией более 1500 человек должен подумать о создании тега 'openscoring'.

ответ

0

Решение было поместить данные, а не файл обработчика:

r = requests.put('http://localhost:8080/openscoring/model/DecisionTreeIris', data=open(file, 'rb'), headers={'Content-type': 'text/xml', 'Accept': 'text/xml'}) 
0

Вы должны проверить аннотации метода org.openscoring.service.ModelResource#deploy(String, HttpServletRequest) для допустимых типов MIME запроса/ответа.

Первый запрос терпит неудачу, поскольку сервер принимает только application/xml и text/xml. Второй запрос терпит неудачу, поскольку сервер испускает application/json полезных данных, но ваш клиент готов принять только text/xml.

+0

Я проверил аннотаций, и читать запросы документации, но я до сих пор не понял. – Dan

+0

Во второй попытке измените заголовки на следующие: 'headers = {'Content-type': 'text/xml', 'Accept': 'application/json'}'. – user1808924

+0

Ошибка 400: неверный запрос – Dan

 Смежные вопросы

  • Нет связанных вопросов^_^