POST-запрос на добавление AttachmentWrapper в Archer - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь вызвать пост-запрос на загрузку файла в Archer. Пожалуйста, найдите мой код ниже:

    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    data = open('testdoc.txt','rb').read()

    url = "http://rsaarcher/platformapi/core/content/attachment" #my archer url

    token = "<my session id token>"
    headers = {
       'Accept':'application/json,text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
       'Authorization': 'Archer session-id="'+token+'"',
       'content-type': "application/json;",
       'cache-control': "no-cache",
    }
   response = requests.request("POST", url, data=data, headers=headers, verify = False)

   print(response.content)
   print(response.status_code)

Я получаю следующую ошибку: b '{"Message": "Запрос содержит тело объекта, но не содержит заголовок Content-Type. Предполагаемое приложение типа медиа \" / octet-stream \ 'не поддерживается для этого ресурса. "," ExceptionMessage ":" Нет MediaTypeFormatter, доступного для чтения объекта типа \' AttachmentWrapper \ 'из содержимого с типом носителя \' application / octet-stream \ '. "," ExceptionType ":" System. Net .Http.UnsupportedMediaTypeException "," StackTrace ":" at System. Net .Http.HttpContentExtensions.ReadAsAsync [T] (содержимое HttpContent, тип типа, IEnumerable 1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\\r\\n at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable 1 форматеры, IFormatterLogger formatterLogger, CancellationToken cancellationToken) "} 'Код состояния: 415

Ответы [ 3 ]

0 голосов
/ 29 января 2020

Ааа, я понял, что отправляемые вами данные имеют неверный формат. Должно быть так:

{
    "AttachmentName" : "myFile.docx",
    "AttachmentBytes" : "[base64 here]"
}
0 голосов
/ 30 января 2020
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

with open("1.png", "rb") as img_file:
    data = base64.b64encode(img_file.read())

url = "http://rsaarcher/platformapi/core/content/attachment" #my archer url
token = "<my session id token>"
headers = { 'Accept': 
'application/json,text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Authorization': 'Archer session-id="'+token+'"',
'content-type': "application/json;",
'cache-control': "no-cache",
}
BODY ={           
        "AttachmentName":"1.png",          
        "AttachmentBytes":data,                                   
        "IsSensitive":"true"                                                          
      }

response = requests.request("POST", url, data=BODY, headers=headers, verify = False)

Я также попробовал ниже:

    BODY = '"Attachment Bodie" {                                      
                  "AttachmentName": "testdoc.txt", 
                  "AttachmentBytes":"'+str(data)+'",             
                  "IsSensitive":"true"                                               
                                }'

Но получаю ту же ошибку

0 голосов
/ 28 января 2020

Накшатра, вы конвертировали файл, который вы загружаете, в base64 заранее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...