PUT запрос

  • Автор темы Автор темы Kaspian
  • Дата начала Дата начала

Kaspian

Client
Регистрация
23.12.2013
Сообщения
93
Реакции
133
Баллы
33
Подскажите, как правильно составить снипет, чтобы отправить PUT запрос?
Нашел на форуме такой код:
Код:
Развернуть Свернуть Копировать
WebCliеnt client = new WebClient();
client.Headers[HttpRequеstHeader.ContentType] = "application/json";
string str = client.UploadString("https://www.zennolab.com", "PUT", "тут json");
Но получаю такие ошибки:
8337659.png


В запросе также нужно передавать cookie и user-agent.
Заранее благодарен.
 
Вот такой код по крайней мере не выдает ошибок при компиляции. Но при выполнении получаю ошибку 401 (несанкционированный). Как понимаю, это из-за того, без cookie отправляю.
Подскажите, как добавить куки? Как-то с помощью CookieContainer, я так понимаю. Нашел примеры использования, но смог разобраться. Буду признателен за помощь.
Код:
Развернуть Свернуть Копировать
string cookie = project.Variables["cookie"].Value;
string url = project.Variables["url"].Value;

var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "PUT";

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    string json = "{\"user\":\"user\"}";

    streamWriter.Write(json);
    streamWriter.Flush();
    streamWriter.Close();
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
    var result = streamReader.ReadToEnd();
}
 
Разобрался, все работает. Оставлю здесь, может понадобится кому-то в будущем
Код:
Развернуть Свернуть Копировать
string cookie = project.Variables["cookie"].Value;
string url = project.Variables["url"].Value;
string useragent = project.Profile.UserAgent;

var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "PUT";

httpWebRequest.Headers.Add("Cookie", cookie);
httpWebRequest.UserAgent =  useragent;

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    string json = "{\"user\":\"user\"}";

    streamWriter.Write(json);
    streamWriter.Flush();
    streamWriter.Close();
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
 
В первом коде тоже все работает, просто в слове Web была русская буква). Добавляем юзинг usnig System.Net;
 
Последнее редактирование:
  • Оценить
Реакции: Kaspian и alekwuy
Разобрался, все работает. Оставлю здесь, может понадобится кому-то в будущем
Код:
Развернуть Свернуть Копировать
string cookie = project.Variables["cookie"].Value;
string url = project.Variables["url"].Value;
string useragent = project.Profile.UserAgent;

var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "PUT";

httpWebRequest.Headers.Add("Cookie", cookie);
httpWebRequest.UserAgent =  useragent;

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    string json = "{\"user\":\"user\"}";

    streamWriter.Write(json);
    streamWriter.Flush();
    streamWriter.Close();
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Подскажите пожалуйста, как положить ответ сервера в переменную?
 
Подскажите пожалуйста, как положить ответ сервера в переменную?
Последней строкой допишите:
return httpResponse;
Вернет значение в переменную, которая в кубике, если не включено "не возвращать значение"
или
project.Variables["переменная проекта"].Value = (HttpWebResponse)httpWebRequest.GetResponse();
вместо
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

только переменная уже должна быть создана в проекте
 
Последней строкой допишите:
return httpResponse;
Вернет значение в переменную, которая в кубике, если не включено "не возвращать значение"
или
project.Variables["переменная проекта"].Value = (HttpWebResponse)httpWebRequest.GetResponse();
вместо
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

только переменная уже должна быть создана в проекте
Я делал вот так return httpResponse;, выскакивает ошибка в логах Выполнение действия CSharp OwnCode Удаленный сервер возвратил ошибку: (428 Precondition Required, это годный ответ, но C# расценивает как ошибку и не кладет ответ в переменную.
 
Я делал вот так return httpResponse;, выскакивает ошибка в логах Выполнение действия CSharp OwnCode Удаленный сервер возвратил ошибку: (428 Precondition Required, это годный ответ, но C# расценивает как ошибку и не кладет весь ответ в переменную.
Попробуйте перед return - так сделать, т.е. дописать ToString().
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse().ToString();
 
Попробуйте перед return - так сделать, т.е. дописать ToString().
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse().ToString();
Компиляция кода Ошибка в действии "CS0030" "Преобразование типа "string" в "System.Net.HttpWebResponse" невозможно".
 
Компиляция кода Ошибка в действии "CS0030" "Преобразование типа "string" в "System.Net.HttpWebResponse" невозможно".
Потому что сначала идет выполнение метода ToString(), а потом уже приведение типов, string в HttpWebResponse.
Если очень хочется, то так
C#:
Развернуть Свернуть Копировать
var httpResponse = ((HttpWebResponse)httpWebRequest.GetResponse()).ToString();
Но толку от этого мало. Т.к. возвращается объект типа HttpWebResponse, и просто так преобразовывать его в string нет смысла.
Надо читать то что находится в объекте через GetResponseStream, а дальше уже преобразовывать stream в byteArray или string в зависимости от ситуации.
В данном случае в string, т.к. в зенке в переменные можно сохранять только string.
https://msdn.microsoft.com/ru-ru/library/system.net.httpwebrequest.getresponse(v=vs.110).aspx
 
Потому что сначала идет выполнение метода ToString(), а потом уже приведение типов, string в HttpWebResponse.
Если очень хочется, то так
C#:
Развернуть Свернуть Копировать
var httpResponse = ((HttpWebResponse)httpWebRequest.GetResponse()).ToString();
Но толку от этого мало. Т.к. возвращается объект типа HttpWebResponse, и просто так преобразовывать его в string нет смысла.
Надо читать то что находится в объекте через GetResponseStream, а дальше уже преобразовывать stream в byteArray или string в зависимости от ситуации.
В данном случае в string, т.к. в зенке в переменные можно сохранять только string.
https://msdn.microsoft.com/ru-ru/library/system.net.httpwebrequest.getresponse(v=vs.110).aspx
Как я понимаю, это вот так
C#:
Развернуть Свернуть Копировать
string cookie = "куки";
string url = "урл";
string useragent = "юзерагент";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
httpWebRequest.Method = "PUT";
httpWebRequest.Headers.Add("Cookie", cookie);
httpWebRequest.UserAgent =  useragent;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
  string json = "json";
  streamWriter.Write(json);
  streamWriter.Flush();
  streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
  var result = streamReader.ReadToEnd();
return result;
}
так тоже ответа нет.
 
Ребят а брать JSON из переменной, делаю вот так:

Код:
Развернуть Свернуть Копировать
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    string json = project.Variables["BIO"].Value;
    streamWriter.Write(json);
    streamWriter.Flush();
    streamWriter.Close();
}

Отдает 400 ошибку. [Недопустимый запрос], есть какое-либо решение? Спасибо :)
 
чёто не выходит ничего .... вот есть линк который оканчивается .JSON есть данные которые нужно передать ... подскажите как это сделать?
 
Друзья, как добавить прокси проекта в PUT запрос?
 
Подскажите пожалуйста, а как огранизовать PUT-запрос с такими параметрами:
eAO4N5dU4KXDQr.jpg


Пробовал способом, как описано выше:
Код:
Развернуть Свернуть Копировать
tring cookie = project.Variables["cookie"].Value;
string url = project.Variables["url"].Value;
string useragent = project.Profile.UserAgent;
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "PUT";
httpWebRequest.Headers.Add("Cookie", cookie);
httpWebRequest.UserAgent =  useragent;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
  string json = project.Variables["secret"].Value;
  streamWriter.Write(json);
  streamWriter.Flush();
  streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
где в переменных
cookie - куки
--------------------
url - ссылка, на которую идет PUT (с нужным токеном)
8An093qUq9JWem.jpg

--------------------
secret - переменная с параметрами, которые передаются в таком же виде как отснифал
L21jd3oc6NMabA.jpg

Ноч то-то вообще глуха, ошибка в логе :
Компиляция кода Ошибка в действии "CS0116" "A namespace cannot directly contain members such as fields or methods". [Строка: -9; Cтолбец: 1]

Да и мне кажется что не так я как-то пеедаю эти параметры. Подскажите пожалуйста, как правильно организовать такой запрос?
 
Ноч то-то вообще глуха, ошибка в логе :
Компиляция кода Ошибка в действии "CS0116" "A namespace cannot directly contain members such as fields or methods". [Строка: -9; Cтолбец: 1]
upload_2017-11-30_12-47-28.png
upload_2017-11-30_12-48-3.png
Надо добавить пространство имен System.Net.
Плюс во второй строчке в листинге кода опечатка. Если так и в коде, то будет ошибка.
tring cookie = project.Variables["cookie"].Value;
string cookie = project.Variables["cookie"].Value;
 
  • Оценить
Реакции: yriy158
Посмотреть вложение 24992
Надо добавить пространство имен System.Net.
Плюс во второй строчке в листинге кода опечатка. Если так и в коде, то будет ошибка.
tring cookie = project.Variables["cookie"].Value;
string cookie = project.Variables["cookie"].Value;
Спасибо!
Теперь при выполнении кубика выдает
Выполнение действия CSharp OwnCode The remote server returned an error: (500) Internal Server Error.
Буду гадать что не так.
 
Так как получить ответ в json?

return httpResponse;
в ответе System.Net.HttpWebResponse
 
Да я в этом nicht verstehen.
Если знает кто как взять ответ то дайте.
 
Мне нужен ответ в старом варианте:

Код:
Развернуть Свернуть Копировать
string cookie = project.Variables["cookie"].Value;
string url = project.Variables["url"].Value;
string useragent = project.Profile.UserAgent;
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "PUT";
httpWebRequest.Headers.Add("Cookie", cookie);
httpWebRequest.UserAgent =  useragent;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    string json = "{\"user\":\"user\"}";
    streamWriter.Write(json);
    streamWriter.Flush();
    streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
return ???????????????????????????????
 
return response.Headers.ToString(); //получим заголовки ответа
или
using (var read = new StreamReader(response.GetResponseStream())){
string data = read.ReadToEnd();
return data;
}
получим json от сервера
 
  • Оценить
Реакции: Nats1

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)