Сниппет авторизации

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Подскажите как из этого кода можно оставить только авторизацию, которую можно будет добавить в сниппет:
Код:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var request = (HttpWebRequest)WebRequest.Create("https://api.pinnaclesports.com/v1/bets/place");
            string credentials = String.Format("{0}:{1}", "yourclientid", "yourpassword");
            byte[] bytes = Encoding.UTF8.GetBytes(credentials);
            string base64 = Convert.ToBase64String(bytes);
            string authorization = String.Concat("Basic ", base64);
            request.Headers.Add("Authorization", authorization);
            request.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
            request.Method = "POST";
            request.Accept = "application/json";
            request.ContentType = "application/json; charset=utf-8";
            string postJson =
            "{\"uniqueRequestId\":\"3ca3e7a7-12e1-4907-8b84-00f02e814b1d\"," +
            "\"acceptBetterLine\":\"TRUE\"," +
            "\"stake\":150," +
            "\"winRiskStake\":\"WIN\"," +
            "\"lineId\":104520034," +
            "\"sportId\":29," +
            "\"eventId\":311458946," +
            "\"periodNumber\":0," +
            "\"betType\":\"SPREAD\"," +
            "\"team\":\"TEAM1\"," +
            "\"oddsFormat\":\"AMERICAN\"" +
            "}";

            byte[] byteArray = Encoding.UTF8.GetBytes(postJson);
            Stream dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();

            HttpWebResponse response;
            try
            {
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                response = (HttpWebResponse)ex.Response;
            }

            var stream = response.GetResponseStream();
            string responseBody;
            using (var reader = new StreamReader(stream))
            {
                responseBody = reader.ReadToEnd();
            }
        }
    }
}
Возможно ли использовать HTTP Basic access authentication в обычном POST запросе за место этого кода и если можно, то каким образом и какой дополнительный параметр устанавливать в пункте "Типа данных".
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Проблема решилась добавлением одной строчки в get запрос в поле юзер агента, теперь возник другой вопрос: как реализовать поддержку JSON в get запросах?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
У вас и так в заголовке указан Accept
Что не получается? Ответ не приходит в json?
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Я смог реализовать запрос без application/json через стандартную функцию отправки get запросов (без сниппета), при этом только дописал следующие строчки в разделе user agent:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0
Authorization: Basic (значение base64(login:pass))
Есть 2 типа запроса к API: через application/xml и через application/json и отличаются ссылками на запросы и функциональностью (application/xml очень урезан по функциональности). Запросы через application/xml проходят, но мне нужны именно через application/json.
Я пытался добавить дополнительную функцию "Content-Type: application/json" в разделе user agent, но всё равно приходит ответ в application/xml и в ответе пишется:
<error><code>INVALID_REQUEST_DATA</code><message>Only JSON format supported</message></error>.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Поставьте Fiddler на машину и выполните запрос в PM прокси 127.0.0.1:8888
в фиддлере посмотриет какие заголовки отправляются и чего не хватает
 
  • Спасибо
Реакции: amyboose

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
То же самое смог сделать и в http analyzer. Вот что отправляется:
GET /v1/odds?sportid=29 HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0
Authorization: Basic (значение base64(login:pass))
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
Host: api.pinnaclesports.com
Content-Length: 0

Вот что получаю:
HTTP/1.1 400 Bad Request
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/xml; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Fri, 29 Apr 2016 14:23:31 GMT
Set-Cookie: incap_ses_287_678005=(кука)==; path=/; Domain=.pinnaclesports.com
X-Iinfo: 9-35975130-35973327 PNNN RT(1461939810979 295) q(0 0 0 -1) r(2 2) U5
X-CDN: Incapsula
Content-Length: 93

<error><code>INVALID_REQUEST_DATA</code><message>Only JSON format supported</message></error>
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
А в PM в самом get запросе идет следующий текст в параметрах user agent у меня:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0
Authorization: Basic (значение base64(login:pass))
Content-Type: application/json
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Добавил строчку Accept: application/json и все заработало, спасибо за подсказку.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Отлично)
 

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