Excepción de host desconocida con PayPal

Estoy tratando de usar la API del administrador de botones de PayPal. Cada vez que ejecuto mi archivo, independientemente del tipo de llamada, obtengo la siguiente salida de error:

run:
Request sent to PayPal: USER=xxxxxxxxxxxxxxx&PWD=xxxxxxxxx&SIGNATURE=xxxxxxxxxxxx&METHOD=BMButtonSearch&VERSION=59.0&STARTDATE=2012-10-11T00:00:00Z&ENDDATE=2012-10-11T00:00:00Zjava.net.UnknownHostException: sandbox.paypal.com/cgi-bin/webscr
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:866)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1258)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1211)
    at java.net.InetAddress.getAllByName(InetAddress.java:1127)
    at java.net.InetAddress.getAllByName(InetAddress.java:1063)
    at java.net.InetAddress.getByName(InetAddress.java:1013)
    at BM_ButtonSearch.main(BM_ButtonSearch.java:48)
BUILD SUCCESSFUL (total time: 0 seconds)

Mi código de clase es el siguiente:

import java.net.*;
import javax.net.ssl.*;
import java.io.*;
import java.security.MessageDigest;
import java.util.Date; 

public class BM_ButtonSearch { 

   public static void main(String[] args) {
      try {
         //String hostname = "paypal.com/cgi-bin/webscr"; //Set as host if live
         String hostname = "sandbox.paypal.com/cgi-bin/webscr"; //Set as host if testing
         // Set variables for PayPal transaction
         String user = "xxxxxxxxxxxxxxxxxxxx"; //Set PayPal API username
         String password = "xxxxxxxxxxx"; //API password, not acct password
         String signature = "xxxxxxxxxxxxxxxxxxx"; //Set unique user signature
         String method = "BMButtonSearch"; //Set Button Manager button type
         String version = "59.0"; //Set Button Manager Version as ##.#
         String startdate = "2012-10-11T00:00:00Z"; //Set start date using YYYY-MM-DDTHH:MM:SSZ
         String enddate = "2012-10-11T00:00:00Z"; //Set end date using YYYY-MM-DDTHH:MM:SSZ

         String requestID = "";
         MessageDigest md5 = MessageDigest.getInstance("MD5");
         byte[] md5summe = md5.digest(new Date().toString().getBytes()); 

         for (int it = 0; it < md5summe.length; it++) {
            String temp = Integer.toHexString(md5summe[it] & 0xFF);
            /*
             * toHexString has the side effect of making stuff like 0x0F
             * only one char F(when it should be '0F') so I check the length
             * of string
             */
            if (temp.length() < 2) {
               temp = "0" + temp;
            }
            requestID += temp.toUpperCase();
         } 

         // Build NVP String (currency string added, declare in variables)
         String paramNVP = "USER=" + user + "&PWD=" + password + "&SIGNATURE="
               + signature + "&METHOD=" + method + "&VERSION=" + version
               + "&STARTDATE=" + startdate + "&ENDDATE=" + enddate; 

         System.out.print("Request sent to PayPal: " + paramNVP); 

         // Create the SSL Socket
         int port = 443;
         InetAddress addr = InetAddress.getByName(hostname);
         SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
         SSLSocket sslsock = (SSLSocket) factory.createSocket(addr, port); 

         // Open Socket Output Stream
         String path = "/";
         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(sslsock.getOutputStream(), "UTF8"));

         // Send data as a POST
         bw.write("POST " + path + " HTTP/1.0\r\n"); 

         // Write header info to the socket
         bw.write("Connection: close\r\n");
         bw.write("Content-Type: text/namevalue\r\n");
         bw.write("Content-Length: " + paramNVP.length() + "\r\n");
         bw.write("Host: " + hostname + "\r\n");
         bw.write("X-VPS-REQUEST-ID: " + requestID + "\r\n");
         bw.write("X-VPS-CLIENT-TIMEOUT: 240\r\n");
         // Sets the Payflow client IP variable
         // bw.write("PP_REMOTE_ADDR: 192.168.0.123\r\n");
         bw.write("\r\n"); 

         // Write the NVP String to the Socket
         bw.write(paramNVP);
         // Flush the stream
         bw.flush(); 

         // Read the Socket response
         BufferedReader br = new BufferedReader(new InputStreamReader(
               sslsock.getInputStream()));
         String line;
         while ((line = br.readLine()) != null) {
            System.out.println(line);
         }

         // Close the writer, reader, and the socket
         bw.close();
         br.close();
         sslsock.close();
      } 

      catch (Exception e) {
         e.printStackTrace(System.out);
      }
   } // end main()
}// end class SocketTest 

Cualquier ayuda sería apreciada. Veo que la mayoría de la gente sugiere intentar acceder a la URL a través de un navegador, que en mi caso funciona, solo que no cuando uso mi clase java.

¡Gracias por adelantado! :RE

Respuesta 1

Mi diálogo principal se ha abarrotado de botones. Pensé que sería genial agregar una barra de herramientas con algunos de los botones al cuadro de diálogo. Actualmente estoy usando una imagen en una aplicación ...

Estoy escribiendo un programa que leerá un archivo de texto y arrojará un error si el texto tiene caracteres que no sean espacios en blanco ni caracteres de palabras. La expresión regex parece correcta pero no funciona ...

Tengo un problema y no sé qué debo hacer. Entonces, he creado una pequeña aplicación web usando Java (JSP-Servlet) y API de App Engine. Está funcionando en la configuración regional, pero cuando la implementé, me da ...

Estoy tratando de migrar un proyecto iBatis al servicio de descanso usando Spring boot, Spring data JPA e Hibernate. Estoy atascado en una conversión de consulta, cualquier ayuda es apreciada. Esta es la consulta iBatis que soy ...