В ходе работы очень часто сталкиваюсь с различными внешними API, которые принимают на вход данные, отправленные через POST запрос, и возвращают результат в виде xml или json.
Ниже привожу свой метод отправляющий данные на адрес стороннего сервера через POST:
postedData - данные, отправляемые на сервер, postUrl - адрес, по которому мы обращаемся
Метод возвращает ответ от сервера. Ответ можно прочитать используя следующую конструкцию:
Дальше ответ в зависимости от типа возвращаемых данных сериализуется в объект.
С помощью этого метода я успешно работаю с такими API как ВКонтакте, Яндекс, Одноклассники, FaceBook и др.
Ниже привожу свой метод отправляющий данные на адрес стороннего сервера через POST:
postedData - данные, отправляемые на сервер, postUrl - адрес, по которому мы обращаемся
public static HttpWebResponse PostMethod(string postedData, string postUrl)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(postUrl);
request.Method = "POST";
request.Credentials = CredentialCache.DefaultCredentials;
UTF8Encoding encoding = new UTF8Encoding();
var bytes = encoding.GetBytes(postedData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytes.Length;
using (var newStream = request.GetRequestStream())
{
newStream.Write(bytes, 0, bytes.Length);
newStream.Close();
}
return (HttpWebResponse)request.GetResponse();
}
Метод возвращает ответ от сервера. Ответ можно прочитать используя следующую конструкцию:
var response = PostMethod(postedData, ApiUrl);
if (response != null)
{
var strreader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
var responseToString = strreader.ReadToEnd();
}
Дальше ответ в зависимости от типа возвращаемых данных сериализуется в объект.
С помощью этого метода я успешно работаю с такими API как ВКонтакте, Яндекс, Одноклассники, FaceBook и др.
Спасибо!
ОтветитьУдалитьБольшое спасибо, очень пригодилось
ОтветитьУдалитьWebClient wc = new WebClient();
ОтветитьУдалитьstring access = wc.DownloadString(adreessOfSite);
Так вроде бы быстрей
Санжар, это GET запрос.
ОтветитьУдалитьТем не менее есть другая более короткая запись для POST запроса.
ОтветитьУдалитьusing (var client = new System.Net.WebClient())
{
var values = new System.Collections.Specialized.NameValueCollection();
values.Add("значение", "данные");
client.UploadValues("http://rudevelop.spb.ru/post", values);
}
Руки не доходят обновить запись в блоге :)
Все бы хорошо, но почему то у меня приходит ответ от сервера что отправлен пустой запрос, в чем может быть проблема?
УдалитьЯ метод:
Удалитьclient.UploadValues("http://url", values);
не тестировал. Если найдете ошибку, напишите, пожалуйста.
Привет Денис!
ОтветитьУдалитьэто код на asp.net тоже работать!!
вы можете объяснить как работать на asp.net