2017-08-29 16 views
0

J'essaie d'utiliser Bing Service de données spatiales de Microsoft en utilisant Java à partir de mon serveur. (J'ai utilisé ce code: How to send HTTP request in java?) mais ça ne marche pas du tout.Java - Services de données spatiales Bing: <title> Objet déplacé à ....</title>

Ce que je veux faire: obtenir la latitude et la longitude d'une adresse donnée

public static void main(String[] args) throws IOException { 


    System.out.println(SendRequete()); 

} 

static String SendRequete(){ 


    String bingMapsKey = "zzzzzzzzzz"; 
    String contentType="text/plain"; 
    String targetURL = "http://dev.virtualearth.net/"; 
    String urlParameters="REST/v1/Locations?countryRegion=France&locality=Paris&postalCode=75001&addressLine=rue%20de%20la%20paix&key=" + bingMapsKey; 
    System.out.println(targetURL+urlParameters); 

    try{ 
    HttpURLConnection connection = null; 

    URL url = new URL(targetURL); 
     connection = (HttpURLConnection) url.openConnection(); 

    connection.setRequestMethod("POST"); 
    connection.setRequestProperty("Content-Type", contentType); 

    connection.setRequestProperty("Content-Length", 
      Integer.toString(urlParameters.getBytes().length)); 
     connection.setRequestProperty("Content-Language", "en-US"); 

    connection.setUseCaches(false); 
    connection.setDoOutput(true); 

    //request 
    DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); 
    wr.writeBytes(urlParameters); 
    wr.close(); 


    //Get Response 
    InputStream is = connection.getInputStream(); 
    BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 
    StringBuffer response = new StringBuffer(); // or StringBuffer if Java version 5+ 
    String line; 
    while ((line = rd.readLine()) != null) { 
     System.out.println(line); 
     response.append(line); 
     response.append('\r'); 
    } 
    rd.close(); 
    return response.toString(); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    return null; 

Je continue à avoir les mêmes résultats:

<html><head><title>Object moved</title></head><body> 
<h2>Object moved to <a href="https://msdn.microsoft.com/en-us/library/dd877180.aspx">here</a>.</h2> 
</body></html> 
</body></html>ed to <a href="https://msdn.microsoft.com/en-us/library/dd877180.aspx">here</a>.</h2> 
ml><head><title>Object moved</title></head><body> 

Si je copier et coller sur le navigateur y il fonctionne très bien ... Toute idée d'où le problème est

Répondre

1

On dirait que vous utilisez les services REST de Bing Maps et non les services de données spatiales Bing. Les services REST peuvent géocoder des emplacements individuels à la demande, tandis que les services de données spatiales peuvent géocoder jusqu'à 200 000 emplacements en une seule requête.

En supposant que vous voulez dire les services REST, oui, l'URL que vous créez est correcte. Cependant, vous passez une partie de l'URL en tant que paramètres d'URL alors que vous ne devriez pas l'être. En outre, vous devez faire une demande GET, pas une demande POST. Voici une version modifiée de votre code qui devrait fonctionner.

static String SendRequete(){ 

    String bingMapsKey = "zzzzzzzzzz"; 
    String contentType="text/plain"; 
    String targetURL = "http://dev.virtualearth.net/"; 
    String urlParameters="REST/v1/Locations?countryRegion=France&locality=Paris&postalCode=75001&addressLine=rue%20de%20la%20paix&key=" + bingMapsKey; 
    System.out.println(targetURL+urlParameters); 

    try{ 
     URL url = new URL(targetURL + urlParameters); 
     URLConnection connection = url.openConnection(); 

     //Get Response 
     InputStream is = connection.getInputStream(); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 
     StringBuffer response = new StringBuffer(); // or StringBuffer if Java version 5+ 
     String line; 
     while ((line = rd.readLine()) != null) { 
      System.out.println(line); 
      response.append(line); 
      response.append('\r'); 
     } 
     rd.close(); 
     return response.toString(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
}