Преобразование параметров данных формы тела почтальона в POST-запрос RestSharp C # - PullRequest
0 голосов
/ 31 декабря 2018

Кто-нибудь знает, как преобразовать приведенные ниже параметры формы данных Postman POST Body в запрос RestSharp C # POST, у меня пока ничего не получалось.Конечной точкой является использование OAuth 1.0, и я могу успешно публиковать сообщения только с данными формы тела, никакие другие параметры тела не помогают.

enter image description here

Почтальон RestSharp переведен на:

var client = new RestClient("https://openapi.etsy.com/v2/shipping/templates");
        var request2 = new RestRequest(Method.POST);
        request2.AddHeader("cache-control", "no-cache");
        request2.AddHeader("authorization", "OAuth oauth_consumer_key=" + consumerKey + ",oauth_token=" + oAuthToken + ",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp="+ timeStamp + ",oauth_nonce=" + nonce +",oauth_version=\"1.0\",oauth_signature=" + sig + "");
        request2.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
        request2.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\ntest title\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"origin_country_id\"\r\n\r\n209\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"primary_cost\"\r\n\r\n1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"secondary_cost\"\r\n\r\n1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody);
        IRestResponse response2 = client.Execute(request2);

Но это не работает с RestSharp, он выбрасывает StatusCode Forbidden и Content 'oauth_problem = signature_invalid ...'

Как заставить это работать?Параметры могут быть переданы только с данными формы тела

Обновление: код, используемый для генерации одноразового номера, отметки времени, подписи и т. Д .:

            OAuthBase oAuth = new OAuthBase();

        string nonce = oAuth.GenerateNonce();
        string timeStamp = oAuth.GenerateTimeStamp();
        string normalizedUrl;
        string normalizedRequestParameters;

        string relativeUri = "url";
        string sig = oAuth.GenerateSignature(new Uri(BASE_URL.ToString() + relativeUri), consumerKey, consumerSecret, oAuthToken, oAuthTokenSecret, RequestType.POST.ToString(), timeStamp, nonce, out normalizedUrl, out normalizedRequestParameters);
...