Ciao a tutti.
Sto provando ad eseguire le operazioni descritte su questo sito https://login.pixelpin.co.uk/Developer/frameother.aspx ma il secondo punto mi sta dando dei seri problemi.
Ho implementato una servlet java che effettua una post nel seguente modo:
e i parametri li passo in questo modo:codice:public static String getStringFromUrlPost(String url, String[] paramName, String[] paramValue) { try { String responseString = null; System.out.println("getStringFromUrlPost START url: "+url); String proxyHost = "myProxy"; int proxyPort = xxxx; DefaultHttpClient httpclient = new DefaultHttpClient(); HttpHost proxy = new HttpHost(proxyHost, proxyPort); httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy); HttpResponse response; HttpPost postRequest = new HttpPost(url); List<NameValuePair> pairs = new ArrayList<NameValuePair>(); for (int i=0; i<paramName.length; i++) { System.out.println("getStringFromUrlPost aggiungo "+paramName[i]+" - "+paramValue[i]); pairs.add(new BasicNameValuePair(paramName[i], paramValue[i])); } postRequest.setEntity(new UrlEncodedFormEntity(pairs)); response = httpclient.execute(postRequest); StatusLine statusLine = response.getStatusLine(); System.out.println("getStringFromUrlPost - HttpPost statusLine.getStatusCode(): "+statusLine.getStatusCode()); if(statusLine.getStatusCode() == HttpStatus.SC_OK){ ByteArrayOutputStream out = new ByteArrayOutputStream(); response.getEntity().writeTo(out); out.close(); responseString = out.toString(); } else{ //Closes the connection. ByteArrayOutputStream out = new ByteArrayOutputStream(); response.getEntity().writeTo(out); out.close(); responseString = out.toString(); System.out.println("getStringFromUrlPost - HttpPost responseString: "+responseString); } System.out.println("getStringFromUrlPost - HttpPost responseString: "+responseString); return responseString; } catch (Exception e) { System.out.println("getStringFromUrlPost - error: "+e.toString()); return e.toString(); } }
dove encoding_typ è uguale a "UTF-8".codice:String[] paramName = {"client_id", "client_secret", "redirect_uri", "code", "grant_type"}; String[] paramValue = {URLEncoder.encode(PixelPinUtils.client_id, PixelPinUtils.encoding_type), URLEncoder.encode(PixelPinUtils.client_secret, PixelPinUtils.encoding_type), URLEncoder.encode(PixelPinUtils.redirect_uri, PixelPinUtils.encoding_type), URLEncoder.encode(code, PixelPinUtils.encoding_type), URLEncoder.encode(PixelPinUtils.grant_type, PixelPinUtils.encoding_type)};
Ma in risposta ottengo un Error 400 Invalid parameter value.
Ho provato a scrivere a loro ma mi hanno detto che non hanno tempo per darmi supporto, che loro consigliano di usare i framework (però io ho un sito che non è stato realizzato con nessun framework e quindi volevo provare la strada descritta nel loro sito).
Immagino che ci siano problemi di codifica dei parametri.
Oltre a UTF-8 che altra codifica posso provare?
Qualche consiglio?
Grazie a chi risponderà.
Sandro

Rispondi quotando