org.apache.commons.httpclient 访问需要验证的webservice的一些问题

来源:互联网 发布:网络热门歌曲 编辑:程序博客网 时间:2024/06/05 21:15

1、httpclient验证问题

  webservice需要验证时,直接发送请求会返回 HTTP/1.1 401 Unauthorized 错误

 这时候需要设置:

        Credentials defaultcreds = new UsernamePasswordCredentials("username", "password");
        httpClient.getState().setCredentials(AuthScope.ANY, defaultcreds);

注意password为明文

2、Unsupported xstream 错误

这个需要进行设置请求类型,一般请求如下设置,此为post请求:

        byte[] b = soapRequestData.getBytes("UTF-8");
         InputStream is = new ByteArrayInputStream(b,0,b.length);
        RequestEntity re = new InputStreamRequestEntity(is,b.length,"application/xop+xml; charset=UTF-8; type=\"text/xml\"");
         postMethod.setRequestEntity(re);

3、Unbuffered entity enclosing request can not be repeated.问题

一般来说,webservice需要验证时,在httpclient请求之前需要加上上面的设置,然后使用上面的访问进行post访问时会发生此错误

此时需要将设置改为如下:

 StringRequestEntity requestEntity = new StringRequestEntity(soapRequestData,"application/xop+xml; charset=UTF-8; type=\"text/xml\"","UTF-8");
 postMethod.setRequestEntity(requestEntity);


因此使用httpclient访问需要验证的webservice时,具体代码如下

public static void post() throws Exception {HttpClient httpClient = new HttpClient();//post请求内容String soapRequestData ="postbody";// 构造HttpClient的实例Credentials defaultcreds = new UsernamePasswordCredentials("username", "password");        httpClient.getState().setCredentials(AuthScope.ANY, defaultcreds);        //webservice服务请求路径String url = "";PostMethod postMethod = new PostMethod(url);//使用系统提供的默认的恢复策略postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler());                  StringRequestEntity requestEntity = new StringRequestEntity(soapRequestData,"application/xop+xml; charset=UTF-8; type=\"text/xml\"","UTF-8");         postMethod.setRequestEntity(requestEntity);         // 执行postMethodint statusCode = httpClient.executeMethod(postMethod);// HttpClient对于要求接受后继服务的请求,System.out.println("statusCode is "+statusCode);if (statusCode != HttpStatus.SC_OK) {System.err.println("Method failed: "+ postMethod.getStatusLine());}// 读取内容byte[] responseBody = postMethod.getResponseBody();// 处理内容System.out.println(new String(responseBody,"utf-8"));}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 耳机胶套脱落掉入耳朵怎么办 苹果笔记本电用完了开机了怎么办 华为荣耀5x锁屏密码忘了怎么办 华为荣耀锁屏密码忘了怎么办 华为手机屏锁密码忘了怎么办 华为荣耀9青春版相机很模糊怎么办 华为荣耀7手机照相忽然模糊怎么办 苹果5s进水开不了机怎么办 红米4a玩王者荣耀卡怎么办 老是显示媒体存储以停止运行怎么办 支付宝邮二维码地址留错了怎么办 华为畅享5s太卡怎么办 金立手机导航gps信号弱怎么办 贴了膜后边缘有气泡怎么办 魅族mx5刷机失败然后黑屏怎么办 魅族手机无线网玩王者卡怎么办 魅族手机玩王者荣耀卡怎么办 魅族手机导航gps信号弱怎么办 魅族手机4g信号差怎么办 魅族手机下面一排键失灵怎么办 魅族手机冲不进去电怎么办 苹果账号付款了又让付款怎么办 魅蓝3s开机定屏怎么办 魅族手机未找到固件怎么办不用电脑 魅族手机触屏局部失灵怎么办 更新了魅蓝的新系统掉帧怎么办 手机后盖摔了一下凹了一个洞怎么办 魅族手机充电需要重启怎么办 网上预约好了但就诊卡丢了怎么办 如果魅族手机锁屏密码忘记了怎么办 魅族手机应用加密忘记密码了怎么办 小米电视盒子3s死机黑屏怎么办 小米note充电充不进去电怎么办 乐视手机otg功能用不了怎么办 小米4c手机玩王者荣耀卡怎么办 捡的小米6被锁了怎么办 小米5s手机玩穿越火线卡怎么办 苹果平板更新完系统登录不上怎么办 谷歌商店一直卡在核对信息怎么办 贴吧邮箱忘了无法登陆怎么办 华为手机绑定了账号忘了怎么办