title: Login to amazon seller central website using java
body: <p>I would like to login to amazon seller central using java and get all the feedbacks that has been submitted for a seller. I followed the approach mentioned at <a href="http://www.mkyong.com/java/how-to-automate-login-a-website-java-example/" rel="nofollow noreferrer">http://www.mkyong.com/java/how-to-automate-login-a-website-java-example/</a>, but no success.</p>
  
  <p>Below is the code that I am using. Please let me know what wrong I am doing:</p>
  
  <pre><code>public class TestStringSplit {
      private List&lt;String&gt; cookies;
      private HttpsURLConnection conn;
  
      private final String USER_AGENT = "Mozilla/5.0";
  
      public static void main(String[] args) throws Exception {
  
          String url = "https://sellercentral.amazon.in/gp/feedback-manager/view-all-feedback.html";
          TestStringSplit http = new TestStringSplit();
  
          // make sure cookies is turn on
          CookieHandler.setDefault(new CookieManager());
  
          // 1. Send a "GET" request, so that you can extract the form's data.
          HashMap&lt;String, String&gt; hm = http.GetPageContent(url);
          url = hm.keySet().iterator().next();
          String page = hm.get(url);
  
          String postParams = http.getFormParams(page, "xxx@gmail.com", "abcdef@123");
  
          // 2. Construct above post's content and then send a POST request for
          // authentication
          http.sendPost(url, postParams);
  
          // 3. success then go to gmail.
          // String result =
          // (http.GetPageContent(targetURL)).entrySet().iterator().next().getValue();
          // System.out.println(result);
      }
  
      private void sendPost(String url, String postParams) throws Exception {
  
          URL obj = new URL(url);
          conn = (HttpsURLConnection) obj.openConnection();
  
          // Acts like a browser
          conn.setUseCaches(false);
          conn.setRequestMethod("POST");
          conn.setRequestProperty("Host", "sellercentral.amazon.in");
          conn.setRequestProperty("User-Agent", USER_AGENT);
          conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
          conn.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
          for (String cookie : this.cookies) {
              conn.addRequestProperty("Cookie", cookie.split(";", 1)[0]);
          }
          conn.setRequestProperty("Connection", "keep-alive");
          // conn.setRequestProperty("Referer",
          // "https://accounts.google.com/ServiceLoginAuth");
          conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
          conn.setRequestProperty("Content-Length", Integer.toString(postParams.length()));
  
          conn.setDoOutput(true);
          conn.setDoInput(true);
  
          // Send post request
          DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
          wr.writeBytes(postParams);
          wr.flush();
          wr.close();
  
          int responseCode = conn.getResponseCode();
          System.out.println("\nSending 'POST' request to URL : " + url);
          System.out.println("Post parameters : " + postParams);
          System.out.println("Response Code : " + responseCode);
  
          BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
          String inputLine;
          StringBuffer response = new StringBuffer();
  
          while ((inputLine = in.readLine()) != null) {
              response.append(inputLine);
          }
          in.close();
          System.out.println(response.toString());
  
      }
  
      private HashMap&lt;String, String&gt; GetPageContent(String url) throws Exception {
  
          URL obj = new URL(url);
          conn = (HttpsURLConnection) obj.openConnection();
          // default is GET
          conn.setRequestMethod("GET");
          conn.setUseCaches(false);
  
          // act like a browser
          conn.setRequestProperty("User-Agent", USER_AGENT);
          conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
          conn.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
          if (cookies != null) {
              for (String cookie : this.cookies) {
                  conn.addRequestProperty("Cookie", cookie.split(";", 1)[0]);
              }
          }
          int responseCode = conn.getResponseCode();
          System.out.println("\nSending 'GET' request to URL : " + url);
          System.out.println("Response Code : " + responseCode);
  
          BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
          String inputLine;
          StringBuffer response = new StringBuffer();
  
          while ((inputLine = in.readLine()) != null) {
              response.append(inputLine);
          }
          in.close();
  
          // Get the response cookies
          setCookies(conn.getHeaderFields().get("Set-Cookie"));
  
          System.out.println("redirected url: " + conn.getURL());
          HashMap&lt;String, String&gt; hm = new HashMap&lt;&gt;();
          hm.put(conn.getURL().toString(), response.toString());
  
          return hm;
  
      }
  
      public String getFormParams(String html, String username, String password) throws UnsupportedEncodingException {
  
          System.out.println("Extracting form's data...");
  
          Document doc = Jsoup.parse(html);
  
          // Google form id
          Element loginform = doc.getElementById("ap_signin_form");
          Elements inputElements = loginform.getElementsByTag("input");
          List&lt;String&gt; paramList = new ArrayList&lt;String&gt;();
          for (Element inputElement : inputElements) {
              String key = inputElement.attr("name");
              String value = inputElement.attr("value");
  
              if (key.equalsIgnoreCase("Email"))
                  value = username;
              else if (key.equalsIgnoreCase("Password"))
                  value = password;
              paramList.add(key + "=" + URLEncoder.encode(value, "UTF-8"));
          }
  
          // build parameters list
          StringBuilder result = new StringBuilder();
          for (String param : paramList) {
              if (result.length() == 0) {
                  result.append(param);
              } else {
                  result.append("&amp;" + param);
              }
          }
          return result.toString();
      }
  
      public List&lt;String&gt; getCookies() {
          return cookies;
      }
  
      public void setCookies(List&lt;String&gt; cookies) {
          this.cookies = cookies;
      }
  
  }
  </code></pre>