- Регистрация
- 11.12.2016
- Сообщения
- 100
- Благодарностей
- 53
- Баллы
- 28
Друзья, создал свой вариант POST запроса в виде DLL, прикрутил ее, все работает когда вызываешь 3 аргумента, но когда все 6, то ругается.
Ошибка такая:
Вот сам код запроса к DLL:
Вы спросите почему я сделал так? Потому что некоторые сайтыпалят некоторые запросы через стандартные методы встроенные в зенку, а тут отрабатываются запросы хорошо и приходит корректный ответ. Даже байты сравнивал, разницы была только в приветствии на уровне сертификата, может так и палил.
Что делаю не так? В визуал студио все пашет хорошо.
DLL код:
Ошибка такая:
Тип Время Сообщение
03:31:32 Компиляция кода Ошибка в действии "CS1501" "No overload for method 'SendHttpRequest' takes 6 arguments". [Строка: 10; Cтолбец: 37]
Вот сам код запроса к DLL:
C#:
var HttpClient = new MyHttpClient();
string h1 = "Authorization1: Bearer abc123\nAuthorization2: Bearer abc123";
string h2 = "{\"param1\":\"value1\",\"param2\":\"value2\"}";
string url = "https://vivazzi.pro/test-request/";
string proxy = "127.0.0.1:8888";
bool useProxy = true;
string contentType = "application/json";
var result = HttpClient.SendHttpRequest(h1, h2, url, proxy, useProxy, contentType);
return result;
Вы спросите почему я сделал так? Потому что некоторые сайтыпалят некоторые запросы через стандартные методы встроенные в зенку, а тут отрабатываются запросы хорошо и приходит корректный ответ. Даже байты сравнивал, разницы была только в приветствии на уровне сертификата, может так и палил.
Что делаю не так? В визуал студио все пашет хорошо.
DLL код:
C#:
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Net;
namespace MyLibrary
{
public class MyHttpClient
{
public string SendHttpRequest(string h1, string h2, string url, string proxy = null, bool useProxy = false, string contentType = "application/json")
{
var request = new HttpRequestMessage(HttpMethod.Post, url);
var uri = request.RequestUri;
var mySP = ServicePointManager.FindServicePoint(uri);
mySP.Expect100Continue = false; // Удалить заголовок expect: '100-continue'
var headers = ParseHeaders(h1);
foreach (var header in headers)
{
request.Headers.TryAddWithoutValidation(header.Key, header.Value);
}
request.Content = new StringContent(h2, Encoding.UTF8, contentType);
var handler = new HttpClientHandler();
handler.Proxy = new System.Net.WebProxy(proxy);
handler.UseProxy = useProxy;
var client = new HttpClient(handler);
client.DefaultRequestHeaders.ExpectContinue = false;
var response = client.SendAsync(request).Result;
var result = response.Content.ReadAsStringAsync().Result;
return result;
}
static Dictionary<string, string> ParseHeaders(string headerString)
{
var headers = new Dictionary<string, string>();
var lines = headerString.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var line in lines)
{
var parts = line.Split(new[] { ':' }, 2);
var key = parts[0].Trim();
var value = parts[1].Trim();
headers[key] = value;
}
return headers;
}
}
}
Вложения
-
5,2 КБ Просмотры: 52
-
23,9 КБ Просмотры: 46