Web services EnergyStar Portfolio Manager-Java客户端,用于使用REST API进行身份验证

Web services EnergyStar Portfolio Manager-Java客户端,用于使用REST API进行身份验证,web-services,rest,portfolio,java-client,Web Services,Rest,Portfolio,Java Client,我是个彻头彻尾的新手。经过两周的研究,我已经到了这个地步,仍然非常失落和绝望 我的目标:从EnergyStar Portfolio Manager Restful web services/API检索数据,并将数据放入SQL数据库或excel工作表中 迄今为止的进展情况: 1) 我发现一个示例代码似乎很适合我所需要的,除了身份验证部分。我在让WSDL服务工作方面比RESTful服务更成功。特别是对于EnergySTAR,它需要某种身份验证,而我似乎无法做到这一点 2) 检索获取协议: 我的源代码

我是个彻头彻尾的新手。经过两周的研究,我已经到了这个地步,仍然非常失落和绝望

我的目标:从EnergyStar Portfolio Manager Restful web services/API检索数据,并将数据放入SQL数据库或excel工作表中

迄今为止的进展情况: 1) 我发现一个示例代码似乎很适合我所需要的,除了身份验证部分。我在让WSDL服务工作方面比RESTful服务更成功。特别是对于EnergySTAR,它需要某种身份验证,而我似乎无法做到这一点

2) 检索获取协议:

我的源代码:

package-com;
导入javax.ws.rs.GET;
导入javax.ws.rs.Path;
导入javax.ws.rs.PathParam;
导入javax.ws.rs.products;
导入javax.ws.rs.core.Response;
导入com.User;
@路径(“/wstest/property/”)
公共类用户管理模块
{
@得到
@路径(“/{propertyId}/design/metrics?measurementSystem=METRIC”)
@生成(“应用程序/xml”)
公共响应getUserById(@PathParam(“propertyId”)整数id)
{
用户=新用户();
user.setId(id);
返回Response.status(200).entity(user.build();
}
}
package-com;
导入java.io.Serializable;
导入javax.xml.bind.annotation.XmlAccessType;
导入javax.xml.bind.annotation.XmlAccessorType;
导入javax.xml.bind.annotation.XmlAttribute;
导入javax.xml.bind.annotation.xmlement;
导入javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name=“propertyMetrics”)
公共类用户实现可序列化{
私有静态最终长serialVersionUID=1L;
@XmlAttribute(name=“propertyId”)
私人不动产ID;
@xmlement(name=“metric”)
私有双度量;
@xmltattribute(name=“designEnergyCost”)
私人双能源成本;
@XmlAttribute(name=“designScore”)
私人双积分;
@XmlAttribute(name=“designSiteTotal”)
私人双保险;
@XmlAttribute(name=“designSiteIntensity”)
私人双保险;
@XmlAttribute(name=“designTargetEnergyCost”)
私人双重设计目标能源成本;
@XmlAttribute(name=“designTargetToTalgHg”)
私人双设计目标总排放量;
@XmlAttribute(name=“designTargetSiteTotal”)
私人双重设计目标网站总数;
@XmlAttribute(name=“designTargetSiteIntensity”)
私人双重设计目标强度;
@XmlAttribute(name=“designTargetSourceTotal”)
私人双设计targetSourceTotal;
@XmlAttribute(name=“designTargetSourceIntensity”)
私人双设计目标源强度;
@xmldattribute(name=“medianEnergyCost”)
私人双媒体能量成本;
@xmltattribute(name=“medianTotalGHGEmissions”)
私人双纵隔;
@xmldattribute(name=“medianScore”)
私人双中庭;
公共int getId(){
返回属性ID;
}
public void setId(int-propertyId){
this.propertyId=propertyId;
}
公共双getmendianScore(){
返回中芯;
}
//    
//public void setFirstName(字符串firstName){
//this.firstName=firstName;
//    }
//公共字符串getLastName(){
//返回姓氏;
//    }
//public void setLastName(字符串lastName){
//this.lastName=lastName;
//    }
}
包测试;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.StringReader;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
导入javax.xml.bind.JAXBContext;
导入javax.xml.bind.JAXBException;
导入javax.xml.bind.Unmarshaller;
导入com.User;
公共类RestClientXML{
公共静态void main(字符串[]args)
{
尝试
{
URL=新URL(“https://portfoliomanager.energystar.gov/wstest/");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod(“GET”);
conn.setRequestProperty(“接受”、“应用程序/xml”);
如果(连接getResponseCode()!=200)
{
抛出新的RuntimeException(“失败:HTTP错误代码:”+conn.getResponseCode());
}
BufferedReader br=新的BufferedReader(新的InputStreamReader((conn.getInputStream()));
字符串apiOutput=br.readLine();
系统输出打印项次(APIOUT);
连接断开();
JAXBContext JAXBContext=JAXBContext.newInstance(User.class);
解组器jaxbUnmarshaller=jaxbContext.createUnmarshaller();
User=(User)jaxbUnmarshaller.unmarshal(新StringReader(apiOutput));
System.out.println(user.getId());
/*System.out.println(user.getFirstName());
System.out.println(user.getLastName());
*/
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}捕获(JAXBEException e){
e、 printStackTrace();
}
}
}
其中conn是HttpURLConnection

conn.setRequestProperty("Authorization", "Basic " + Base64.encodeBase64String((getWebServicesUsername() + ":" + getWebServicesPassword()).getBytes()));