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