Как исправить команду PyCurl, не загружающую файл JSON на сервер - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь загрузить файл JSON на сервер для использования в тестировании.Я пробовал этот код, который дает правильный вывод статуса, но файл не загружен на сервер:

import pycurl
import sys

mosaic_path = sys.argv[1]

file = open(mosaic_path)
print(mosaic_path)

c = pycurl.Curl()
c.setopt(c.URL, 'http://test-URL:21308/mosaic/testing/')
c.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json', 'Accept: application/json'])
c.setopt(c.PUT, 1)
c.setopt(c.READDATA, file)
c.perform()
print('Status: %d' % c.getinfo(c.RESPONSE_CODE))
c.close()
file.close()

эта команда cURL работает:

curl -I -T 2by2_hero_2by2.jsonhttp://test -URL: 21308 / мозаика / тестирование

(я пытаюсь обновить эти команды curl до сценариев Python)

любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 23 мая 2019

Вы можете обратиться к этому вопросу: Загрузка файла через pyCurl

, как вы сделали бы, HTTP заголовок запроса будет выглядеть следующим образом:

PUT /mosaic/testing/ HTTP/1.1
Host: test-URL:21308
Content-Type: application/json
Accept: application/json

<the content of mosaic_path>

сервер не будет считать такие заголовки допустимым сигналом передачи файла, потому что единственный способ передачи файла через http - это использование Content-Type: multipart/form-data и восстановление способа отправки содержимого файла (с использованием границы).обратитесь к этому вопросу: Как работает загрузка файла HTTP?

...