0

azure のおかげでデバイス ID を作成するクライアント プログラムを開発しようとしています。私はそれを作成するためにazure restを使用しているので、jersey実装を使用してクライアントプログラムからこのWebサービスを呼び出しますが、com.sun.jersey.api.client.ClientHandlerException: java.net.SocketException: Socket is not connected: connect i test it usingを使用してエラーが発生しますpostman は動作し、python は動作します。ここに私のJavaコードがあります:

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();

        }
    }

}

ありがとう

4

1 に答える 1

0

あなたのコードによると、 REST APIと HTTP PUT メソッドを使用して新しいデバイス ID を作成したいようです。

ただし、コードでは、クエリ パラメーターtop=100は不要であり、要求本文{deviceId: "iotdevice1"}が欠落しています。

これが私の作業コードです。

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);

それが役に立てば幸い。ご不明な点がございましたら、お気軽にお問い合わせください。


更新

既存のデバイス ID を削除するには、REST APIリファレンスと以下のコードを参照してください。

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);

上記のヘッダーに注意してくださいIf-Match

于 2016-06-14T06:16:11.687 に答える