2016-01-27 3 views
1

Попытка отправить довольно длинную строку в веб-сайт REST (aptrack). Я получаю следующее исключение:Как передать длинную строку в запросе HttpClient.PostAsync

Недопустимый URI: Строка Uri слишком длинная.

Мой код:

var encodedMessage = HttpUtility.UrlEncode(message); 
var requestUri = string.Format("{0}{1}issue/{2}/execute?comment={3}", url, YoutrackRestUrl, issue.Id, encodedMessage); 
var response = await httpClient.PostAsync(requestUri, null).ConfigureAwait(false); 

Так что я взял мои шансы с FormUrlEncodedContent

var requestUri = string.Format("{0}{1}issue/{2}/execute", url, YoutrackRestUrl, issue.Id); 

var postData = new List<KeyValuePair<string, string>>(); 
postData.Add(new KeyValuePair<string, string>("comment", message)); 

var content = new FormUrlEncodedContent(postData); 
var response = await httpClient.PostAsync(requestUri, content).ConfigureAwait(false); 

что приводит к точно такой же вопрос.

Строка (комментарий) Я отправляю, это измененный набор файлов фиксации в SVN. Который может быть действительно длинным, так что у меня действительно нет способа обойти это. Есть ли способ опубликовать контент без ограничения длины строки?

Прочитайте следующие вопросы, но не нашел там ответа:

+0

Это поведение такое же, если вы только публикуете, как 1 символ в своем сообщении? – Marty

+0

Возможно, у вас есть Youtrack api в поле комментариев. Что об этом говорит их документация по API? если есть ограничение на свойство/поле комментария - тогда - не много. Вы можете сделать это, кроме как сократить его ... – Marty

+0

в соответствии с их документами: без ограничений. исключение происходит в строке «var content = new FormUrlEncodedContent (postData)»; – bas

ответ

2

Ну короткий ответ на него - просто положите его в Тело, вместо того, чтобы пытаться протолкнуть все тот через URL

Но как работу на билете показал - ответ был здесь How to set large string inside HttpContent when using HttpClient?

Реальная проблема неоспоримой в FormUrlEncodedContent

+0

Вот что делает второй пример, не так ли? – rene

0

Try this..Will быть полезной для UWP ..

Uri uri = new Uri("your uri string"); 
Windows.Web.Http.HttpClient client = new Windows.Web.Http.HttpClient(); 
var value1 = new System.Collections.Generic.List<System.Collections.Generic.KeyValuePair<string,string>> 
{ 
    // your key value pairs 
}; 

var response = await client.PostAsync(uri,new HttpFormUrlEncodedContent(value1)); 
var result = await response.Content.ReadAsStringAsync(); 
Смежные вопросы