title: 401 Error when connecting to PrestaShop webservice from android
body: <p>I am trying to call a webservice in PrestaShop but i get 401 not authorized error. Even though i have passed the username key. I tried the authenticator too but i get an error HttpRetryingError. </p>
  
  <p>Find below the code snippet of what i have done. </p>
  
  <p><strong>Method one:</strong></p>
  
  <pre><code>final String username = "key_here";
  final String password = "";// leave it empty
  
  URL urlToRequest = new URL(urlStr);
  urlConnection = (HttpURLConnection) urlToRequest.openConnection();
  urlConnection.setDoOutput(true);
  urlConnection.setRequestMethod("GET");
  urlConnection.setRequestProperty("Content-Type",
  "text/xml;charset=utf-8");
  
  String authToBytes = username + ":" + password;
  //....
  byte[] authBytes = org.apache.commons.codec.binary.Base64.encodeBase64(authToBytes.getBytes());
  String authBytesString = new String(authBytes);
  //then your code
  urlConnection.setRequestProperty("Authorization","Basic " + authBytesString);
  
  int statusCode = urlConnection.getResponseCode(); ---&gt; i get 401
  if (statusCode != HttpURLConnection.HTTP_OK) {
  // throw some exception
  InputStream in =
  new BufferedInputStream(urlConnection.getInputStream());
  Log.e("tag", getResponseText(in));
  }
  </code></pre>
  
  <p><strong>Method two</strong></p>
  
  <pre><code>final String username = "keyvaluehere";
  final String password = "";// leave it empty
  String authToBytes = username + ":" + password;
  byte[] authBytes = org.apache.commons.codec.binary.Base64.encodeBase64(authToBytes.getBytes());
  String authBytesString = new String(authBytes);
  HttpParams httpParameters = new BasicHttpParams();
  // Set the timeout in milliseconds until a connection is established.
  // The default value is zero, that means the timeout is not used.
  int timeoutConnection = 30000;
  HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
  // Set the default socket timeout (SO_TIMEOUT)
  // in milliseconds which is the timeout for waiting for data.
  int timeoutSocket = 30000;
  HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
  HttpClient httpclient = new DefaultHttpClient(httpParameters);
  
  HttpGet httpGet = new HttpGet(url);
  httpGet.setHeader("Authorization","Basic " +authBytesString);
  try {
  HttpResponse response = httpclient.execute(httpGet);
  String strResponse = EntityUtils.toString(response.getEntity());
  if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
  return strResponse;
  }
  return strResponse;
  }catch(ClientProtocolException e) {
  e.printStackTrace();
  } catch (IOException e) {
  e.printStackTrace();
  }
  </code></pre>
  
  <p>I even tried passing the string as ws_key and the keyvalue and i even called the url as <a href="http://keyvalue@domain.com/api/namehere" rel="nofollow">http://keyvalue@domain.com/api/namehere</a></p>
  
  <p>but it doesn't work too.
  Please assist.</p>