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:
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();
}
}
e i parametri li passo in questo modo:
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)};
dove encoding_typ è uguale a "UTF-8".
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