httpclient - как установить Content-Disposition в application / json; в составной части

Используя System.Net.Http.Httpclient, я пытаюсь сделать многостраничный пост на C # и с wp8.

Это фрагмент моего кода:

varclient = new HttpClient();

client.DefaultRequestHeaders.TryAddWithoutValidation(    
"Content-Type", "application/json");

content = new MultipartFormDataContent();
content.Add(new StringContent(requestObj, Encoding.UTF8, "application/json"), "request");

но используя Fiddler, я заметил, что отправляю это:

Content-Disposition: данные формы; имя = запрос

Content-Type: text / plain; charset = utf-8

пока мне нужно отправить это (взято с устройства Android, на котором работает вызов):

Content-Disposition: application / json; name = "запрос"

Content-Type: text / plain; charset = UTF-8

  • Как добиться ожидаемого результата?

person eeadev    schedule 19.03.2015    source источник
comment
Я знаю, что это старый вопрос, но похоже, что вы должны захотеть установить Content-Type в application/json, а не Content-Disposition.   -  person ahong    schedule 20.12.2019


Ответы (1)


Что о:

установка заголовка для HttpContent с помощью TryAddWithoutValidation

и изменив MultipartFormDataContent на объект MultipartContent:

var content = new MultipartContent();

var contentData = new StringContent(requestObj, Encoding.UTF8, "application/json");
contentData.Headers.TryAddWithoutValidation("Content-Disposition", "application/json name=request");
content.Add(contentData);

Это приводит к этим заголовкам

POST http://www.directupload.net/index.php?mode=upload HTTP/1.1
Content-Type: multipart/mixed; boundary="6905763f-e85a-44f9-b7f4-8967b357addf"
Host: www.directupload.net
Content-Length: 274
Expect: 100-continue
Connection: Keep-Alive

--6905763f-e85a-44f9-b7f4-8967b357addf
Content-Type: application/json; charset=utf-8
Content-Disposition: application/json name=request

{    "id": 1,    "name": "A green door",    "price": 12.50,    "tags": ["home", "green"]}
--6905763f-e85a-44f9-b7f4-8967b357addf--
person kmcnamee    schedule 19.03.2015
comment
спасибо, но все то же самое; Тип содержимого: приложение / json; charset = utf-8 Content-Disposition: form-data - person eeadev; 19.03.2015
comment
вы меняете MultipartFormDataContent на MultipartContent ()? - person kmcnamee; 19.03.2015
comment
запрос, идущий с заголовком размещения контента, изменен, но сервер теперь возвращает неподдерживаемый тип мультимедиа http 415? - person kmcnamee; 19.03.2015
comment
да, у меня 415, делаю это content.Headers.TryAddWithoutValidation (Content-Disposition, application / json name = request); - person eeadev; 20.03.2015