最近项目上要求调用异地的WebService,以前有写过xfire WebService,就按照原先的写了,发现掉不同,后来发现对面写的WebServcie是使用.NET语言写的,且传输的是对象,愁了三天,相继使用了XFIRE,以及CXF,AXIS调用,都不行,各种错误。后来就想使用基础的,java自带的HttpConnection提交其XML数据,后来开始也是掉不同,出现错误如下:
java.io.IOException: Server returned HTTP response code: 500 for URL:
后来从网上找原因都说是要求增加如下代码:
connectioin.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
试了不行,后来辗转多地,找到如下方法,试了,可以
con.setRequestProperty("SOAPAction", "相应的soapaction");、
源代码如下:
/**
* 以post的方式模拟HTTP
* @param urlStr
* @param paras
* @return
*/
public String httpPost(String urlStr, String paras) {
byte[] data = paras.getBytes();
URL url = null;
HttpURLConnection con = null;
InputStream input = null;
String response = null;
try {
url = new URL(urlStr);
con = (HttpURLConnection)url.openConnection();
con.setConnectTimeout(1000 * 6);
//Server returned HTTP response code: 500 for URL:错误解决方案
con.setRequestProperty("SOAPAction", "http://tempuri.org/IInsureBill/Submit");
con.setDoInput(true);
con.setDoOutput(true);
//如果为 true,则只要有条件就允许协议使用缓存
con.setUseCaches(false);
con.setRequestMethod("POST");
con.setRequestProperty("Connection", "Keep-Alive");
con.setRequestProperty("Charset", "UTF-8");
con.setRequestProperty("Content-Length", String.valueOf(data.length));
con.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
con.connect();
DataOutputStream outputStream = new DataOutputStream(con.getOutputStream());
outputStream.write(data);
outputStream.flush();
outputStream.close();
int responseCode = con.getResponseCode();
if(responseCode == 200) {
input = con.getInputStream();
response = getResponse(input);
}else {
input = con.getInputStream();
response = getResponse(input);
System.out.println(response);
response = "返回码为:"+responseCode;
}
}catch(Exception e) {
e.printStackTrace();
}finally {
con.disconnect();
}
return response;
}
分享到:
相关推荐
相信大家在调用rest webservice通常使用httpclient.该示例代码是使用httpconnection的形式,以POST和GET两种方式提交调用REST WebService。在项目中一直使用的工具类,分享给大家
java调用net开发的webservice实例下载 问题终于解决了,之前加上?wsdl的时候报如下错: - I/O exception (java.net.ConnectException) caught when processing request: Connection timed out: connect - Retrying ...
Java建立HttpConnection连接的例子,支持在手机端运行的的Java小程序,通过建立HttpConnection连接,获取到文本信息并显示在屏幕上,相关的测试代码如下: ContentConnection connection = (ContentConnection) ...
java 基于https请求httpconnection, 在代码中加入tls, tls1.2等..
android中利用httpconnection上传文件。可以选择要上传文件的路径,上传网址
handy包 http://blog.csdn.net/facepp/article/details/7439840
ajax调用java实例源码 Java HTTP 服务器 服务器基于我的 HttpServer< HttpConnection > server = new HttpServer<> ( 8080 ); server . getUrlMapping() .append( " / " , (request, response) - > response ....
Android异常详情介绍 ...2.HttpConnection没有连接池的概念,多少次请求就会建立多少个IO,在访问量巨大的情况下服务器的IO可能会耗尽。 3.通常是因为HttpClient访问单一实例的不同的线程或未关闭Input
at com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:191) at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:80) at ...
Android用HttpConnection访问网络时实现类似浏览器自动保持上一次会话的功能
Java和Java 8核心概念 ... 使用HttpConnection API进行联网的Android本机代码(不适用于Volley,Retrofit等库,并尽可能避免使用OkHttpClient) :使用HttpClient和ftp方法进行Rest调用。 其他-Java概念测验: :
注意:使用HttpURLConnection,只用调用java自身的jar包中的net方法,而使用Ht tpClient,要引入apache的jar包,调用里面的方法,不过这个是经过封装的,效率更高 。 【思考题】 1. 列举4种Android网络编程API? ...
NULL 博文链接:https://wangxc.iteye.com/blog/591160
2.4.6 使用HttpConnection 8 2.4.7 永久性数据(RMS) 9 2.4.8 存储集(Record Store) 10 2.4.9 记录 11 2.4.10 枚举 12 2.4.11 异常 13 2.5 用户界面(LCDUI 13 2.5.1 UI基础 13 2.5.2 高级UI 14 2.5.3 低级UI 15 ...
2.4.6 使用HttpConnection 8 2.4.7 永久性数据(RMS) 9 2.4.8 存储集(Record Store) 10 2.4.9 记录 11 2.4.10 枚举 12 2.4.11 异常 13 2.5 用户界面(LCDUI 13 2.5.1 UI基础 13 2.5.2 高级UI 14 2.5.3 低级UI 15 ...
调用doInBackground() 、 // 主线程上调用:onPreExecute()、onProgressUpdate()、onPostExecute() 二.网络请求(同步与异步) 1.get post 概念 一般来讲 get 从服务器获取数据 post 上传表单到服务器,也会获取...
细心的开发者可能会发现,在用浏览器访问http时一般都会自动保持同一个会话,而用代码访问http连接时则每一次访问都会新建一个会话,那么我趁着这几天休假就把之前从网上资料中整理出的一个demo分享出来,实现安卓...
之前用python调用API存JSON的时候试用了很多方法,现在调用API直接获取参数的时候也是查了好多例子(毕竟我是一个初学者)。 结果让我发现了,原来只用把之前写的方法中去掉传参即可。 白白浪费了一个多小时的时间。...
PrepareHandler() HttpConnection forecastConnection = new HttpConnection(httpHandler) city = URLEncoder.encode(city) String url = String.format(Definitions.WEATHER_URLforecastConnection.get(urlthis....
[+]增加linux和win的可执行文件,windows需要.NET环境。 [+]增加写入文件功能,针对有漏洞的struts版本号会自动写入success.txt文件。 [+]增加struts2-057检测和利用,生产环境还没有找到可利用的例子,实属鸡肋的洞,...