Как я называю Отдых Webserivce с методом сообщения и отправляю данные XML в C#

При использовании Dojo, Вы просто называете dojo.hitch (), который делает почти точно, что Вы хотите. Почти — потому что это может использоваться для упаковки контекста также. Но Ваш пример является первым:

dojo.hitch(out, "hello")("world");
dojo.hitch(out, "hello", "world")();

, А также:

var A = {
  sep: ", ",
  out: function(a, b){ console.log(a + this.sep + b); }
};

// using functions in context    
dojo.hitch(A, A.out, "hello")("world");
dojo.hitch(A, A.out, "hello", "world")();

// using names in context
dojo.hitch(A, "out", "hello")("world");
dojo.hitch(A, "out", "hello", "world")();

dojo.hitch () является частью Основы Dojo, поэтому как только Вы включали dojo.js, это там для Вас.

Другое общее средство доступно в dojox.lang.functional.curry модуле (зарегистрированный в Функциональная забава в JavaScript с Dojo — просто взгляд на эту страницу для "карри"). Конкретно можно хотеть посмотреть на карри (), и неравнодушный ().

карри () накапливает аргументы (как в Вашем примере), но с одним различием: как только арность удовлетворена, что вызывает функцию, возвращая значение. Реализация Вашего примера:

df.curry(out)("hello")("world");
df.curry(out)("hello", "world");

Уведомление, которое последняя строка не имеет" ()" в конце — это называют автоматически.

неравнодушный () позволяет заменять аргументы наугад:

df.partial(out, df.arg, "world")("hello");

7
задан devforall 17 November 2009 в 23:22
поделиться

2 ответа

Нет ничего принципиально неправильного в том, что вы делаете, но вам нужно сбросить / закрыть средство записи потока запросов. Это можно легко сделать с помощью конструкции using , поскольку удаление писателя также сбрасывает ее:

using (StreamWriter writer = new StreamWriter(req.GetRequestStream()))
{
    writer.WriteLine(xml.ToString());
}

Затем вам нужно вызвать GetResponse , чтобы фактически выполнить запрос:

req.GetResponse()

(Обратите внимание, что HttpWebResponse , возвращенный из этого, также является одноразовым, так что не забудьте утилизировать и его.)

5
ответ дан 6 December 2019 в 23:10
поделиться

Я использую класс WebClient:

WebClient webClient = new WebClient();
using (webClient)
{
   requestInterceptor.OnRequest(webClient);
   var enc = new ASCIIEncoding();
   return enc.GetString(webClient.UploadData(uri, enc.GetBytes(dataAsString)));
}
6
ответ дан 6 December 2019 в 23:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: