0

EPAのデータ交換Webサービスをテストする必要があります。100のアカウント、建物、エネルギー使用量の分布などを作成するのは難しいので、プロセスを自動化したいです。簡単なGETを実行するためのコード例を検索しました。私が見つけた最高のものはhttp://pic.dhe.ibm.com/infocenter/tivihelp/v10r1/index.jsp?topic=%2Fcom.ibm.taddm.doc_7.2%2FSDKDevGuide%2Ft_cmdbsdk_restapi_java.htmlでした。私は自分の目的のためにこれを変更しました。

  1. 証明書を使用すると、その行でエラーがスローされます
  2. 証明書がない場合(コメントアウト)、接続はタイムアウトになり、getResponseCode()で例外がスローされます。

わからない:

  1. 証明書を提出する正しい方法は何ですか
  2. クレデンシャルを正しく送信している場合
  3. コードが不完全であるため、アプリケーションが応答コードを取得できない場合
  4. Eclipse Juno(WTPなし)の代わりに、Eclipse EE(Web Tools Platformを使用)を使用して、Project>WebApplicationを作成する必要があります。

前もって感謝します。

    package Package1;

import java.io.*;
import java.util.*;
import java.lang.StringBuffer;
import java.net.*;
import java.net.HttpURLConnection;
import javax.net.ssl.HttpsURLConnection;

public class Class1 {


    public static void main (String args[]){

        try{            

        // set this property to the location of the cert file
         System.setProperty("javax.net.ssl.trustStore","C:/Documents and Settings/bhattdr/Desktop/-.energystar.gov.der");   


        String username = "yy777PPP";
        String password = "yy777PPP";
        String userpass = "";

        URL url = new URL("https://portfoliomanager.energystar.gov/wstest/account");
//      URLConnection uc = url.openConnection();
        HttpsURLConnection uc = (HttpsURLConnection) url.openConnection();

        userpass = username + ":" + password;
        String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes());

        System.out.println("sending request...");

        uc.setRequestMethod("GET");
        uc.setAllowUserInteraction(false);
        uc.setDoOutput(true);
        uc.setRequestProperty( "Content-type", "text/xml" );
        uc.setRequestProperty( "Accept", "text/xml" );

        uc.setRequestProperty ("Authorization", basicAuth);

        System.out.println(uc.getRequestProperties());


//        uc.setRequestProperty( "authorization", "Basic " + encode("administrator:collation"));

//        Map headerFields = uc.getHeaderFields();
//        System.out.println("header fields are: " + headerFields);


        int rspCode = uc.getResponseCode();

        if (rspCode == 200) {
            InputStream is = uc.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);

            String nextLine = br.readLine();
            while (nextLine != null) {
                System.out.println(nextLine);
                nextLine = br.readLine();
            }

        }
        }

        catch(IOException e) { 
            e.printStackTrace();
        }

    }
}
4

3 に答える 3

0

自分で巻く必要はありません。

  • 何かを書きたい場合は、残りのクライアントとして機能する既存のクラスを持つジャージーを使用できます ( Java の残りのクライアント? )
  • 何かを書きたくない場合に使用できる残りの API を実行するアプリはたくさんあります。Googleはたくさん出てきます(http://code.google.com/p/rest-client/のように)
于 2013-02-07T00:03:04.027 に答える