问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java调用post请求到localhost:4040

发布网友 发布时间:2022-04-25 23:22

我来回答

2个回答

热心网友 时间:2022-06-18 17:07

打包成jar就别用localhost了,改成服务器的ip地址追问那个服务就是运行在本地的电脑,不是在服务器

热心网友 时间:2022-06-18 17:07

一、需要用到的场景 在jQuery中使用$.post()就可以方便的发起一个post请求,在android程序中有时也要从服务器获取一些数据,就也必须得使用post请求了。 二、需要用到的主要类 在android中使用post请求主要要用到的类是HttpPost、HttpResponse、EntityUtils 三、主要思路 1、创建HttpPost实例,设置需要请求服务器的url。 2、为创建的HttpPost实例设置参数,参数设置时使用键值对的方式用到NameValuePair类。 3、发起post请求获取返回实例HttpResponse 4、使用EntityUtils对返回值的实体进行处理(可以取得返回的字符串,也可以取得返回的byte数组) 代码也比较简单,注释也加上了,就直接贴出来了 [java] package com.justsy.url; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.os.Bundle; public class HttpURLActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println("start url..."); String url = "192.168.2.112:8080/JustsyApp/Applet"; // 第一步,创建HttpPost对象 HttpPost httpPost = new HttpPost(url); // 设置HTTP POST请求参数必须用NameValuePair对象 List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("action", "downloadAndroidApp")); params.add(new BasicNameValuePair("packageId", "89dcb664-50a7-4bf2-aeed-49c08af6a58a")); params.add(new BasicNameValuePair("uuid", "test_ok1")); HttpResponse httpResponse = null; try { // 设置httpPost请求参数 httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); httpResponse = new DefaultHttpClient().execute(httpPost); //System.out.println(httpResponse.getStatusLine().getStatusCode()); if (httpResponse.getStatusLine().getStatusCode() == 200) { // 第三步,使用getEntity方法活得返回结果 String result = EntityUtils.toString(httpResponse.getEntity()); System.out.println("result:" + result); T.displayToast(HttpURLActivity.this, "result:" + result); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("end url..."); setContentView(R.layout.main); } } ADD:使用HttpURLConnection 进行post请求 [java] String path = "192.168.2.115:8080/android-web-server/httpConnectServlet.do?PackageID=89dcb664-50a7-4bf2-aeed-49c08af6a58a"; URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setConnectTimeout(5000); System.out.println(conn.getResponseCode()); ============================================================================================================================ 通过get和post方式向服务器发送请求 首先说一下get和post的区别 get请求方式是将提交的参数拼接在url地址后面,例如/index.jsp?num=23&jjj=888; 但是这种形式对于那种比较隐私的参数是不适合的,而且参数的大小也是有*的,一般是1K左右吧,对于上传文件 就不是很适合。 post请求方式是将参数放在消息体内将其发送到服务器,所以对大小没有*,对于隐私的内容也比较合适。 如下Post请求 POST /LoginCheck HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Referer: 192.168.2.1/login.asp Accept-Language: zh-CN User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ZHCN) Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Host: 192.168.2.1 Content-Length: 39 Connection: Keep-Alive Cache-Control: no-cache Cookie: language=en Username=admin&checkEn=0&Password=admin //参数位置 在android中用get方式向服务器提交请求: 在android模拟器中访问本机中的tomcat服务器时,注意:不能写localhost,因为模拟器是一个单独的手机系统,所以要写真是的IP地址。 否则无法访问到服务器。 //要访问的服务器地址,下面的代码是要向服务器提交用户名和密码,提交时中文先要经过URLEncoder编码,因为模拟器默认的编码格式是utf-8 //而tomcat内部默认的编码格式是ISO8859-1,所以先将参数进行编码,再向服务器提交。 private String address = "192.168.2.101:80/server/loginServlet"; public boolean get(String username, String password) throws Exception { username = URLEncoder.encode(username);// 中文数据需要经过URL编码 password = URLEncoder.encode(password); String params = "username=" + username + "&password=" + password; //将参数拼接在URl地址后面 URL url = new URL(address + "?" + params); //通过url地址打开连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //设置超时时间 conn.setConnectTimeout(3000); //设置请求方式 conn.setRequestMethod("GET"); //如果返回的状态码是200,则一切Ok,连接成功。 return conn.getResponseCode() == 200; } 在android中通过post方式提交数据。 public boolean post(String username, String password) throws Exception { username = URLEncoder.encode(username);// 中文数据需要经过URL编码 password = URLEncoder.encode(password); String params = "username=" + username + "&password=" + password; byte[] data = params.getBytes(); URL url = new URL(address); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(3000); //这是请求方式为POST conn.setRequestMethod("POST"); //设置post请求必要的请求头 conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 请求头, 必须设置 conn.setRequestProperty("Content-Length", data.length + "");// 注意是字节长度, 不是字符长度 conn.setDoOutput(true);// 准备写出 conn.getOutputStream().write(data);// 写出数据 return conn.getResponseCode() == 200;追答1、直接用servlet就可以了,request.getInputStream(),然后解析xml,然后你的业务操作,组装XML,response.getOutputStream()写出去就OK了。 但这个性能低,而且还要依赖web容器。 2、socket实现http协议,把HTTP协议好好看看,自己解析(其实就是字符串的操作哦)。 3、你要是只做客户端的话可以用httpClient,几行代码搞定了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 黑龙江债权转让合同纠纷该怎样取证 安徽债权转让合同纠纷应该怎么样取证 房产官司律师费多少 中国地质大学长城学院算野鸡大学吗? 免费看电影的网址 如何投稿晉江經濟報?大神们帮帮忙 下载游戏之后 ,主页被修改成www.jjjppp.com这不是我想要的,请问怎样改回原来的 打开找服的网站为什么都跳到同一个站啊www_jjj-com这个啊。 那有关于高中学习的免费网址!拜托,大哥大姐 开加速www4.jjj.com就打不开了什么情况??? 建筑电气专业顶岗实习周记6篇实习总结一篇 急急急! 求苏州电气有限公司的社会实践报告一篇拜托了各位 谢谢 急电气工程及其自动化见习实习总结 电气技术员实习安全心得 求一份关于电气实习的自我鉴定 写一份关于暑假的社会实践报告关于电气方面的 电气实习笔记怎么写啊?有范文吗? 群星stellaris全mod无效怎么办 mod无法使用解决办法 群星mod有没有加船上限的 群星mod订阅显示未安装 群星色孽mod是什么 群星更多思潮mod显示不全 《群星stellaris》mod怎么装 晶繁体字怎么写 各位,大家好,我想要学英语,问题是我除了26个字母之外什么都不会,请问我需要做些什么?大神们帮帮忙 我的网站www.gangguangy.com百度已经收录,为什么只收录首页,里面的内容没收录,是不是网站时间太短了? 有没有设计室内装修的电脑软件 黄油买回来怎么保存?应该放在冷藏室还是冷冻室? 火绒软件能同步电脑时间吗 软件的时间同步是根据电脑系统的时间同步的么? 【时间同步小工具】请问有没有小软件可以双击后自动通过网络同步电脑时间,然后自动退出? 有什么能自动同步网络时间的软件? 怎么可以让计算机时间同步? 电脑日期和时间不能同步怎么解决? 文学门类包括哪些专业? 文学类专业有哪些? 文学类专业有哪些 文学类有哪些专业 文学类指哪些专业? 文学包括哪些本科专业? 学文科可以选择的专业有哪些 文学b05包括哪些专业 文学类都有什么专业