2016-06-13 3 views
0

Ich versuche, ein Client-Programm zu entwickeln, das eine Geräte-Identität dank azurblau erstellt. Ich benutze azurblauen Rest, um es zu erstellen, also rufe ich diesen Webservice von Client-Programm mit Trikot-Implementierung, aber ich bekomme Fehler com.sun.jersey.api.client.ClientHandlerException: java.net.SocketException: Socket ist nicht verbunden: connect Ich teste es mit Postman es funktioniert und Python es funktioniert. hier ist mein Java-Code:kann keine Verbindung zu azurblauen Rest Web Service

public class Test { 

    public static void main(String[] args) { 

     try { 

      Client client = Client.create(); 

      WebResource webResource = client 
        .resource("https://xxxx-iot-hub.azure-devices.net/devices"); 

      ClientResponse response =  webResource.path("/iotdevice1").queryParam("top", "100").queryParam("api-version", "2016-02-03").header("Content-Type", "application/json") 
        .header("Authorization", "SharedAccessSignature sr=xxxxx-iot-hub.azure-devices.net&sig=Yxxxxxxxxxx=1497357420&skn=iothubowner") 
        .put(ClientResponse.class); 



      String output = response.getEntity(String.class); 

      System.out.println("Output from Server .... \n"); 
      System.out.println(output); 

     } catch (Exception e) { 

      e.printStackTrace(); 

     } 
    } 

} 

Dank

+0

Überprüfen Sie Ihre Firewall-Konfiguration –

Antwort

0

nach Ihren Code, so scheint es, dass Sie mit HTTP PUT-Methode die REST API eine neue Geräteidentität unter Verwendung erstellen möchten.

In Ihrem Code ist jedoch der Abfrageparameter top=100 nicht erforderlich und der Anfragetext {deviceId: "iotdevice1"} fehlt.

Hier ist mein Arbeitscode.

String body = "{deviceId: \"iotdevices1\"}"; 
ClientResponse response = webResource.path("/iotdevices1").queryParam("api-version", "2016-02-03") 
        .header("Content-Type", "application/json") 
        .header("Authorization", 
          "SharedAccessSignature sr=xxxx.azure-devices.net&sig=xxxxxxxx&se=1497357420&skn=iothubowner") 
        .put(ClientResponse.class, body); 

Ich hoffe, es hilft. Jede Sorge, bitte zögern Sie nicht mich wissen zu lassen.


aktualisieren:

Für eine bestehende Geräteidentität zu löschen, finden Sie in der REST API Referenz und den Code unten sehen.

ClientResponse response = webResource.path("/iotdevices1").queryParam("api-version", "2016-02-03") 
        .header("Content-Type", "application/json") 
        .header("If-Match", "*") 
        .header("Authorization", 
          "SharedAccessSignature sr=xxxx.azure-devices.net&sig=xxxxxx&se=1497490976&skn=iothubowner") 
        .delete(ClientResponse.class); 

Bitte beachten Sie die Kopfzeile If-Match oben.

+0

Vielen Dank es funktioniert, können Sie mir bitte zeigen, wie Gerät mit diesem Rest API löschen? Ich versuchte, aber es funktioniert nicht – user3499324

+0

@ user3499324 Ich aktualisiere den Code zum Löschen der Identität des Geräts. –

+0

vielen Dank – user3499324

Verwandte Themen