2015-08-30 54 views
0

我有一個Java蒸汽交易機器人,可以通過蒸汽讀取未完成的貿易優惠並根據需求降低它們。我正在使用官方Web API(使用來自http://steamcommunity.com/dev/apikey的API密鑰)將請求傳遞給Steam。變量trade來自我自己的API接口(我已經調試過並且適用於拒絕優惠)。接受來自Steam的使用Web-API和Java的貿易優惠

SteamPlug.steamRequest(method, query);僅僅是一個基本的HTTP請求:

public static String steamRequest(String method, String query) { 
    try { 
     URL obj = new URL(query); 
     HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

     con.setRequestMethod(method); 

     int responseCode = con.getResponseCode(); 

     if (responseCode != 200 && responseCode != 201) { 
      return "ERR" + responseCode; 
     } 

     BufferedReader in = new BufferedReader(
       new InputStreamReader(con.getInputStream())); 
     String inputLine; 
     StringBuilder response = new StringBuilder(); 

     while ((inputLine = in.readLine()) != null) { 
      response.append(inputLine); 
     } 
     in.close(); 

     return response.toString(); 
    } catch (MalformedURLException | ProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // Ignored 
    } 

    return null; 
} 

這是怎麼拒絕貿易提供:

SteamPlug.steamRequest(
      "POST", 
      "http://api.steampowered.com/IEconService/DeclineTradeOffer/v0001/?key=" 
      + SteamPlug.API_KEY + "&tradeofferid=" + trade.getTradeOfferId() 
); 

我所試圖做的是接受行業也是如此。我曾經嘗試這樣做:

SteamPlug.steamRequest(
      "POST", 
      "https://steamcommunity.com/tradeoffer/" + trade.getTradeOfferId() + "/accept?key=" 
      + SteamPlug.API_KEY 
); 

但是我收到一個411 Length Required響應。

我相信我可以通過使用Steam會話認證來接受優惠,但可以僅使用用戶的Web-API密鑰接受交易優惠嗎?

回答

1

您是否閱讀過蒸汽API文檔?沒有交易接受功能,所以我假設你不能通過API接受交易。 您的選擇是檢查SteamBot(儘管它是用C#編寫的)交易功能,並考慮直接向蒸汽網站發送http請求(我相信有適當的蒸汽認證)。我自己現在正在寫一個殭屍程序,現在單一的東西阻止了我 - 接受交易。

+0

是的我已閱讀過這些文檔。不過,我相信另一種解決方法是讓機器人發送報價,儘管這也沒有記錄。 – Momo

+0

好槍是反對蒸汽ToS(至少市場部分),所以我非常懷疑API將允許發送或接受交易。 Plus API主要用於擴展和東西,因此允許以這種方式接受交易是不安全的。 –