c# код POST запроса

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
63
Здравствуйте!

Помогите, пожалуйста, сформировать c# код POST запроса.
Бюджет 200wmr, если кто-то поможет - буду очень признателен!

Нужно передать:
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0
Authorization: access-token zKadFv1s3zxus5yd9c1wtgkFYVTsE93NdQPhyhyhnR1ifh6ODyyPi4gMVXv

Тело запроса:
campaignId={-Variable.api_campaignId-}&text={-Variable.api_text-}&title={-Variable.api_title-}&uploaded={-Variable.api_uploaded-}&url={-Variable.api_url-}&bid={-Variable.api_bid-}

Ответ сервера положить в переменную {-Variable.api_result-}
 

catol

Client
Регистрация
05.07.2012
Сообщения
278
Благодарностей
98
Баллы
28
  • Спасибо
Реакции: Hannes

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
Код:
project.Variables["api_result"].Value = ZennoPoster.HttpPost("http://site.com/api",
    "campaignId="+project.Variables["api_campaignId"].Value+"&text="+project.Variables["api_text"].Value+"&title="+project.Variables["api_title"].Value+"&uploaded="+project.Variables["api_uploaded"].Value+"&url="+project.Variables["api_url"].Value+"&bid="+project.Variables["api_bid"].Value,
    "application/x-www-form-urlencoded", "", "iso-8859-1", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody);
 
  • Спасибо
Реакции: Hannes

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
Тело запроса:
campaignId={-Variable.api_campaignId-}&text={-Variable.api_text-}&title={-Variable.api_title-}&uploaded={-Variable.api_uploaded-}&url={-Variable.api_url-}&bid={-Variable.api_bid-}
PHP:
content:"campaignId="+project.Variables["api_campaignId"].Value+"&text="+project.Variables["api_text"].Value+"&title="+project.Variables["api_title"].Value+"&uploaded="+project.Variables["api_uploaded"].Value+"&url="+project.Variables["api_url"].Value+"&bid="+project.Variables["api_bid"].Value,
это тело запроса
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0
Код:
string strUA = @"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"; //эта строка объявляется до запроса
UserAgent:strUA, //а это передается в запросе
 
  • Спасибо
Реакции: Hannes

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
Код:
project.Variables["api_result"].Value = ZennoPoster.HttpPost(
    "http://site.com/api",
    "campaignId="+project.Variables["api_campaignId"].Value+"&text="+project.Variables["api_text"].Value+"&title="+project.Variables["api_title"].Value+"&uploaded="+project.Variables["api_uploaded"].Value+"&url="+project.Variables["api_url"].Value+"&bid="+project.Variables["api_bid"].Value,
    "application/json",
    "",
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    "",
    "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0",
    true,
    5,
    new[] { "Authorization: access-token zKadFv1s3zxus5yd9c1wtgkFYVTsE93NdQPhyhyhnR1ifh6ODyyPi4gMVXv" }
);
 
  • Спасибо
Реакции: Soly, Saavdav и Hannes

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
63
Спасибо за отклик!

Шива, не срабатывает твой вариант. Ответ сервера "{"name":"Not Found","message":"The requested page does not exist.","code":0,"status":404}".
catol, спасибо, голова тяжелая, в документации сейчас не готов разбираться, а кубик не подходит.
kapelan28, не сообразил как использовать твой вариант. Ведь что-то ещё нужно?
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
Спасибо за отклик!

Шива, не срабатывает твой вариант. Ответ сервера "{"name":"Not Found","message":"The requested page does not exist.","code":0,"status":404}".
catol, спасибо, голова тяжелая, в документации сейчас не готов разбираться, а кубик не подходит.
kapelan28, не сообразил как использовать твой вариант. Ведь что-то ещё нужно?
наверное надо прописать правильный урл для запроса?
 
  • Спасибо
Реакции: Hannes

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
63
Всё прописано. Перепроверил раз 5.
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
  • Спасибо
Реакции: Hannes

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
C#:
string userAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0";
string token = "zKadFv1s3zxus5yd9c1wtgkFYVTsE93NdQPhyhyhnR1ifh6ODyyPi4gMVXv";
string campaignId = project.Variables["api_campaignId"].Value;
string text = project.Variables["api_text"].Value;
string title = project.Variables["api_title"].Value;
string uploaded = project.Variables["api_uploaded"].Value;
string url = project.Variables["api_url"].Value;
string bid = project.Variables["api_bid"].Value;

string data = "campaignId=" + campaignId +
    "&text=" + text +
    "&title=" + title +
    "&uploaded=" + uploaded +
    "&url=" + url +
    "&bid=" + bid;

// POST запрос
string resRequest = ZennoPoster.HttpPost(
    "https://api.xxx.biz/1.0/xxx/xxx",
    data,
    "application/json",
    string.Empty,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly,
    60 * 1000,
    string.Empty,
    userAgent,
    true, 5,
    new[] { "Authorization: access-token " + token }
);
project.Variables["api_result"].Value = resRequest;
Тип данных не понятно, какой нужен - или application/x-www-form-urlencoded или application/json
 
  • Спасибо
Реакции: Hannes

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
C#:
string userAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0";
string token = "zKadFv1s3zxus5yd9c1wtgkFYVTsE93NdQPhyhyhnR1ifh6ODyyPi4gMVXv";
string campaignId = project.Variables["api_campaignId"].Value;
string text = project.Variables["api_text"].Value;
string title = project.Variables["api_title"].Value;
string uploaded = project.Variables["api_uploaded"].Value;
string url = project.Variables["api_url"].Value;
string bid = project.Variables["api_bid"].Value;

string data = "campaignId=" + campaignId +
    "&text=" + text +
    "&title=" + title +
    "&uploaded=" + uploaded +
    "&url=" + url +
    "&bid=" + bid;

// POST запрос
string resRequest = ZennoPoster.HttpPost(
    "https://api.xxx.biz/1.0/xxx/xxx",
    data,
    "application/json",
    string.Empty,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly,
    60 * 1000,
    string.Empty,
    userAgent,
    true, 5,
    new[] { "Authorization: access-token " + token }
);
project.Variables["api_result"].Value = resRequest;
Тип данных не понятно, какой нужен - или application/x-www-form-urlencoded или application/json
Тоже самое.
 
  • Спасибо
Реакции: Hannes

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
Там с самим апи какой то геммор.
 
  • Спасибо
Реакции: Hannes

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
63
В faq тизерки по api есть пример с php заливкой:
PHP:
define('TOKEN', 'XXX');

function httpPost($url, $data, $headers = []) {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($curl);
curl_close($curl);
return $response;
}

$encodedImageData = base64_encode(
file_get_contents('/path/to/image.jpg')
);

$json = httpPost('url', [
'campaignId' => 74347,
'text' => 'Teaser text',
'uploaded' =>  $encodedImageData,
'bid' => 7.5,
'url' => 'https://someurl.com',
], ['Authorization: access-token ' . TOKEN]);

$result = json_decode($json, true);
Стандартные кубики зенки отрабатывают нормально запросы (т.ч в плане api всё ок), другое дело, что не получается у меня корректно передать base64 картинку, поэтому думал попробовать через c#.
 
Последнее редактирование:

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Попробуй так:
C#:
string userAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0";
string token = "zKadFv1s3zxus5yd9c1wtgkFYVTsE93NdQPhyhyhnR1ifh6ODyyPi4gMVXv";
string campaignId = project.Variables["api_campaignId"].Value;
string text = project.Variables["api_text"].Value;
string title = project.Variables["api_title"].Value;
//string uploaded = project.Variables["api_uploaded"].Value;
string url = project.Variables["api_url"].Value;
string bid = project.Variables["api_bid"].Value;

string filePath = project.Variables["filePath"].Value; // путь к картинке
byte[] fileBytes = File.ReadAllBytes(filePath);
string uploaded = Convert.ToBase64String(fileBytes);

string data = "{\"campaignId\":" + campaignId + ",\"text\":\"" + text + "\",\"title\":\"" + title + "\",\"uploaded\":\"" + uploaded + "\",\"url\":\"" + url + "\",\"bid\":" + bid + "}";

// POST запрос
string resRequest = ZennoPoster.HttpPost(
    "https://api.oblivki.biz/1.0/teaser/create",
    data,
    "application/json",
    string.Empty,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    60 * 1000,
    string.Empty,
    userAgent,
    true, 5,
    new[] { "Authorization: access-token " + token }
);
project.Variables["api_result"].Value = resRequest;
UPD
 
Последнее редактирование:

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
63
Тоже не проходит...

Код:
HTTP/1.1 404 Not Found
Server: nginx
Date: Fri, 23 Mar 2018 18:03:16 GMT
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=15
Vary: Accept-Encoding
Content-Encoding: gzip
X-VARITI-CCR: 889644726:1
Set-Cookie: rerf=AAAAAFq1QWRdyTTMBOPFAg==; expires=Sun, 22-Apr-18 18:03:16 GMT; path=/
P3P: policyref="/w3c/p3p.xml", CP="CUR ADM OUR NOR STA NID"
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
63
{"name":"Not Found","message":"The requested page does not exist.","code":0,"status":404}
Тоже самое, что выдавало по варианту Шивы.

Причём рядом стандартный post-кубик зенки отрабатывает нормально, но там беда с загрузкой картинки ({"message":"error","errors":{"uploaded":["Возникли проблемы с изображением, попробуйте другую картинку"]}}).
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
  • Спасибо
Реакции: Hannes

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
63
Проблема решена.
Спасибо @Dimionix.

Код:
string userAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0";
string token = "zKadFv1s3zxugfgdfgdfgfdgfdgfgfdgfdgdfg6ODyyPi4gMVXv";
string campaignId = project.Variables["api_campaignId"].Value;
string text = project.Variables["api_text"].Value;
string title = project.Variables["api_title"].Value;
string url = project.Variables["api_url"].Value;
string bid = project.Variables["api_bid"].Value;

string filePath = project.Variables["filePath"].Value; // путь к картинке
byte[] fileBytes = File.ReadAllBytes(filePath);
string uploaded = Convert.ToBase64String(fileBytes);

string data = "campaignId=" + campaignId +
    "&text=" + text +
    "&title=" + title +
    "&uploaded=" + System.Net.WebUtility.UrlEncode(uploaded) +
    "&url=" + url +
    "&bid=" + bid;

// POST запрос
string resRequest = ZennoPoster.HttpPost(
    "https://api.site.com",
    data,
    "application/x-www-form-urlencoded",
    string.Empty,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    60 * 1000,
    string.Empty,
    userAgent,
    true, 5,
    new[] { "Authorization: access-token " + token }
);
return resRequest;
Если вы передаёте картинку в base64, то нужно дополнительно кодировать её в UrlEncode перед отправкой запроса.
 
  • Спасибо
Реакции: Dimionix

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83

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