Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 1
1

Правильное формирование POST-запроса к торговой площадке Steam

01.06.2015, 16:40. Показов 2809. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Пытаюсь программно купить предмет на на торговой площадке Steam. Предварительный анализ показал, что браузер в этой ситуации отправляет POST-запрос на https://steamcommunity.com/market/buylisting/[ид листинга] (прикрепил к посту скриншот из Chrome Dev Tools).

Все параметры запроса известны, я перепроверил их несколько раз. Код генератора запроса следующий:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
boolean bought = false;
 
String[] buff = new String[5];
// для теста настраиваюсь на определенный прредмет
buff[0] = "http://steamcommunity.com/market/listings/570/Heavenly%20Guardian%20Crest";
// это ид листинга, который я планирую купить
buff[4] = "429311922054427146";
 
//строка, которую передаю в POST
String fortran = "sessionid=" + globals.sessionid +
        "&currency=5&subtotal=" + String.valueOf(200) + // ручками забил цену без комиссий (отображаемая на сайте умножается на 100)
        "&fee=" + String.valueOf((int)(30)) + // ручками забил комиссию
        "&total=" + String.valueOf(230) + // полная цена с комиссиями
        "&quantity=1";
String cookie = globals.cookie;
 
try {
    String USER_AGENT = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.65 Safari/537.36";
 
    URL url = new URL("https://steamcommunity.com/market/buylisting/" + buff[4]);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("POST");
    con.setRequestProperty("Host", "steamcommunity.com");
    con.setRequestProperty("Accept", "*/*");
    con.setRequestProperty("Origin", "http://steamcommunity.com");
    con.setRequestProperty("CSP", "active");
    con.setRequestProperty("User-Agent", USER_AGENT);
    con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    con.setRequestProperty("Referer", buff[0]);
    con.setRequestProperty("Accept-Encoding", "gzip, deflate");
    con.setRequestProperty("Accept-Language", "en-US;q=0.8,en;q=0.6");
    con.setRequestProperty("Cookie", cookie);
    // отправляю фортран в пост
    con.setDoOutput(true);
    DataOutputStream wr = new DataOutputStream(con.getOutputStream());
    wr.writeBytes(fortran);
    wr.flush();
    wr.close();
 
    int responseCode = con.getResponseCode();
    System.out.println("\nSending 'POST' request to URL : " + url);
    System.out.println("Response Code : " + responseCode);
    if (responseCode != 200) {
        bought = false;
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getErrorStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
 
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        System.out.println(response.toString());
    }
    else
    {
        bought = true;
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
 
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        System.out.println(response.toString());
    }
 
}
catch (Exception e) { System.out.println(e.toString()); }
 
System.out.println(bought);
Настраивался статично на несколько разных предметов, каждый из них во время теста не был скуплен. Но я стабильно получаю от сервера 502 ошибку: "There was a problem purchasing your item. The listing may have been removed. Refresh the page and try again.".

После получения такого ответа оказывается, что предмет на самом деле скуплен не был. А значит, ошибка либо generic, либо я запросил покупку уже скупленного предмета. В любом случае, где-то в моем коде косяк. Подскажите, пожалуйста, что я делаю не так? Заранее спасибо.

PS. Я новичок в JAVA, да и этот кусок кода был выдран из основного тела программы в целях тестирования. Поэтому красотой он, увы, не отличается.
Миниатюры
Правильное формирование POST-запроса к торговой площадке Steam  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2015, 16:40
Ответы с готовыми решениями:

Формирование Post запроса
Не получается сформировать куки в пост запросе. Вот код. string lang = "ru"; string...

Формирование POST-запроса
Всем привет! Пишу программу, которая могла бы загружать фотографии во вконтач. В документации...

Формирование Post запроса...
Люди я уже всю голову сломал, ну никак не получается Post запрос сформировать с сайта ...

Формирование POST запроса для ASPX странички
Доброго времени суток. Не знаю в какую ветку написать, но думаю лучше будет сюда. Задача такова:...

1
84 / 84 / 42
Регистрация: 25.01.2010
Сообщений: 386
16.06.2015, 21:27 2
Брат, бьюсь примерно над той же проблемой (здесь)
Если будут какие-то продвижения - дай знать.
0
16.06.2015, 21:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2015, 21:27
Помогаю со студенческими работами здесь

Формирование post запроса: где брать параметры
Видел несколько примеров для формирования post запроса к сервису translate.google. При...

Формирование запроса в 2 таблицы базы данных. Каков синтаксис запроса?
Коллеги, добрый день! Есть Form1. На ней размещен Combobox1 и Texbox1 Есть база данных,...

Правильное формирование базы
Здравствуйте, нужна помощь с созданием одной таблицы, описывающей посты на форуме. Структура...

Правильное формирование данных в таблице
Добрый час Форумчане! Помогите с формированием данных в таблице. Я занимаюсь линиями ВЛ и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru