I am trying to call a web service in PrestaShop, but I am getting a 401 invalid error. Even though I passed the username key. I also tried the authenticator, but I have an HttpRetryingError error.
Find below the code snippet of what I did.
Method One:
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(); ---> i get 401 if (statusCode != HttpURLConnection.HTTP_OK) { // throw some exception InputStream in = new BufferedInputStream(urlConnection.getInputStream()); Log.e("tag", getResponseText(in)); }
Method two
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(); }
I even tried passing the string as ws_key and the key value, and I even named the url as http: // keyvalue@domain.com / api / namehere
but it doesn’t work either. Please, help.
android web-services prestashop
Rat-a-tat-a-tat Ratatouille
source share