• 通过HttpClient访问数据接口

    日期:2011-11-16 | 分类:技术

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://gang613.blogbus.com/logs/174327580.html

    PI的访问接口可以用Http Post/Get方式访问,返回值为XML。
    1)采用Post方法。参数inXml,参数值为XML格式,服务端接收的格式为"application/x-www-form-urlencoded",具体方法如下:

    PostMethod post = new PostMethod(PI_EndPoint_HisData);
    post.setRequestHeader(Content-Type",application/x-www-form-urlencoded;charset=utf-8");
    HttpClient httpclient = new HttpClient();
    StringBuilder sb = new StringBuilder();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    sb.append("");
    for (String tagId : tagIdList) {
    sb.append("     sb.append(" Stime=\"" + sdf.format(start) + "\"");
        sb.append(" Etime=\"" + sdf.format(end) + "\"/>");
    }
    sb.append("");
    NameValuePair[] data = {
        new NameValuePair("inXml",sb.toString())
    };
    post.setRequestBody(data);
    int result = httpclient.executeMethod(post);
    String resp = post.getResponseBodyAsString();

    2)返回值为XML,其中根节点包括了NameSpace,在采用JDom处理时要加入NameSpace

    ByteArrayInputStream bis = new ByteArrayInputStream(resp.getBytes());
    SAXBuilder builder = new SAXBuilder(false);
    Document doc = builder.build(bis);
    Element root = doc.getRootElement();
    Namespace ns = root.getNamespace();
    Element point = rNode.getChild("Point",ns);
    ......

    收藏到:Del.icio.us