java httpClient 发送httpGet 请求 特殊字符

java httpClient 发送httpGet 请求,请求url串中有特殊字符,如果不进行转义,如何发送呀??(服务端不是我的,如果转义了服务端验证不过)

补充:在浏览器地址栏直接复制url(带特殊字符),返回结果正确。

2个回答

后台请求当然是需要转义的。
浏览器输入但是它传递的时候还是有转义的。

lsksll
小志志志 那为什么服务端对这转义的验证不过去呀,这是什么机制?(我用socket模拟了一下http,同样数据,不进行转义可以验过去)
接近 3 年之前 回复
lsksll
小志志志 那为什么服务端对这转义的验证不过去呀,这是什么机制?(我用socket模拟了一下http,同样数据,不进行转义可以验过去)
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何在http.Get请求中使用双引号和冒号作为查询字符串?

<div class="post-text" itemprop="text"> <p>I would like to send this rest call ... </p> <pre><code>GET http://search.maven.org/solrsearch/select?q=g:"ch.viascom.groundwork"+AND+a:"foxhttp"&amp;rows=100&amp;core=gav </code></pre> <p>... but can't because it gets encoded to</p> <pre><code>http://search.maven.org/solrsearch/select?core=gav&amp;q=g%3A%22ch.viascom.groundwork%22%2BAND%2Ba%3A%22foxhttp%22&amp;rows=20 </code></pre> <p>This is my go function:</p> <pre class="lang-golang prettyprint-override"><code>func searchOnMavenCentral() { var groupId = "ch.viascom.groundwork" var artifactId = "foxhttp" params := url.Values{} params.Add("q", `g:"` + groupId + `"+AND+a:"` + artifactId + `"`) params.Add("rows", "20") params.Add("core", "gav") resp, err := http.Get("http://search.maven.org/solrsearch/select?" + params.Encode()) if err != nil { log.Fatalln(err) } log.Println(resp.Request.URL) log.Println(resp) } </code></pre> <p>How can I solve this problem? Thx for your help in advance!</p> <p><strong>Updated state</strong></p> <p>With your help I managed to create the desired URL, but I'm facing the following new issue now:</p> <pre><code>&amp;{400 Bad Request 400 HTTP/1.1 1 1 map[Connection:[keep-alive] Date:[Mon, 05 Aug 2019 23:56:45 GMT] Server:[nginx/1.14.1]] 0xc00011a080 -1 [chunked] false false map[] 0xc0000d4000 &lt;nil&gt;} </code></pre> <p>This is the updated code:</p> <pre class="lang-golang prettyprint-override"><code>func searchOnMavenCentral() { var groupId = "ch.viascom.groundwork" var artifactId = "foxhttp" qp := "q=g:\"" + groupId + `"+AND+a:"` + artifactId + `"` + "&amp;rows=20" + "&amp;core=gav" u := &amp;url.URL{ Scheme: "http", Host: "search.maven.org", Path: "/solrsearch/select", RawQuery: qp, } resp, err := http.Get (u.String()) if err != nil { log.Fatalln(err) } log.Println(resp.Request.URL) log.Println(resp) } </code></pre> </div>

关于java Httpclient post 提交JSon数据的问题

我查出数据库的数据 推送给安卓解析, 由于安卓的接口没有做好,我自己做了个 servlst 进行解析。但是不知道怎么拿值! 这是 推送数据的方法! public static String doPost(String url,JSONArray json){ String result=null; DefaultHttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); JSONObject response = null; try { StringEntity s = new StringEntity(json.toString()); s.setContentEncoding("UTF-8"); s.setContentType("application/json");//发送json数据需要设置contentType post.setEntity(s); HttpResponse res = client.execute(post); if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ HttpEntity entity = res.getEntity(); result = EntityUtils.toString(res.getEntity());// 返回json格式: // response = JSONObject.fromObject(result); } } catch (Exception e) { throw new RuntimeException(e); } return result; } 一下是 servlst 解析的方法 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("POST请求方式"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); //String param=request.getParameter(""); //接收数据 out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the POST 200 method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); }

java 模拟HTTP doPost请求 设置参数

最近做一接口,要通过JAVA类请求SERVLET ,DOPOST方法. 不知道怎么把我的参数传过去.在网上找了几个例子. 都不行. 方法一: [code="java"] package com.3sfg.setvlet; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.URIException; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.httpclient.util.URIUtil; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * HTTP工具箱 * * @author leizhimin 2009-6-19 16:36:18 */ public final class HttpTookit { private static Log log = LogFactory.getLog(HttpTookit.class); /** * 执行一个HTTP GET请求,返回请求响应的HTML * * @param url 请求的URL地址 * @param queryString 请求的查询参数,可以为null * @param charset 字符集 * @param pretty 是否美化 * @return 返回请求响应的HTML */ public static String doGet(String url, String queryString, String charset, boolean pretty) { StringBuffer response = new StringBuffer(); HttpClient client = new HttpClient(); HttpMethod method = new GetMethod(url); try { if (StringUtils.isNotBlank(queryString)) //对get请求参数做了http请求默认编码,好像没有任何问题,汉字编码后,就成为%式样的字符串 method.setQueryString(URIUtil.encodeQuery(queryString)); client.executeMethod(method); if (method.getStatusCode() == HttpStatus.SC_OK) { BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset)); String line; while ((line = reader.readLine()) != null) { if (pretty) response.append(line).append(System.getProperty("line.separator")); else response.append(line); } reader.close(); } } catch (URIException e) { log.error("执行HTTP Get请求时,编码查询字符串“" + queryString + "”发生异常!", e); } catch (IOException e) { log.error("执行HTTP Get请求" + url + "时,发生异常!", e); } finally { method.releaseConnection(); } return response.toString(); } /** * 执行一个HTTP POST请求,返回请求响应的HTML * * @param url 请求的URL地址 * @param params 请求的查询参数,可以为null * @param charset 字符集 * @param pretty 是否美化 * @return 返回请求响应的HTML */ public static String doPost(String url, Map<String, String> params, String charset, boolean pretty) { StringBuffer response = new StringBuffer(); HttpClient client = new HttpClient(); HttpMethod method = new PostMethod(url); //设置Http Post数据 if (params != null) { HttpMethodParams p = new HttpMethodParams(); for (Map.Entry<String, String> entry : params.entrySet()) { p.setParameter(entry.getKey(), entry.getValue()); } p.setParameter("abc", "efg"); method.setParams(p); } try { client.executeMethod(method); if (method.getStatusCode() == HttpStatus.SC_OK) { BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset)); String line; while ((line = reader.readLine()) != null) { if (pretty) response.append(line).append(System.getProperty("line.separator")); else response.append(line); } reader.close(); } } catch (IOException e) { log.error("执行HTTP Post请求" + url + "时,发生异常!", e); } finally { method.releaseConnection(); } return response.toString(); } public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("parax", "123456"); String y = doGet("http://127.0.0.1:8080/AIRP/servletTest", "xx=00", "GBK", true); String z = doPost("http://127.0.0.1:8080/AIRP/servletTest?", map, "GBK", false); System.out.println(y); System.out.println(z); } }[/code] POST 方法 ,我在servletJ里,取不知任何参数,请求帮助. 感谢. 方法二: [code="java"] private static String testPost(String MSG_ID,String MOBILE_NO,String CONTENT, String SERVICE_ID,String PASS,String SP_CODE,String LINK_ID, String FEE_TYPE,String FEE_CODE) throws IOException { URL url = new URL("http://127.0.0.1:8080/AIRP/servletTest"); URLConnection connection = url.openConnection(); connection.setDoOutput(true); OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "utf-8"); out.write("MSG_ID="+MSG_ID+"&MOBILE_NO="+MOBILE_NO+"&ACTION_ID=3" +"&SERVICE_ID=99&PASS=asdfasd" +"&SP_CODE=10625777&LINK_ID="); //向页面传递数据。post的关键所在! // remember to clean up out.flush(); out.close(); String sCurrentLine; String sTotalString; sCurrentLine = ""; sTotalString = ""; InputStream l_urlStream; l_urlStream = connection.getInputStream(); // 传说中的三层包装阿! BufferedReader l_reader = new BufferedReader(new InputStreamReader( l_urlStream)); while ((sCurrentLine = l_reader.readLine()) != null) { sTotalString += sCurrentLine + "\r\n"; } System.out.println(sTotalString); return sTotalString; } [/code] if (params != null) { HttpMethodParams p = new HttpMethodParams(); for (Map.Entry<String, String> entry : params.entrySet()) { p.setParameter(entry.getKey(), entry.getValue()); } p.setParameter("abc", "efg"); method.setParams(p); } 这样不知道怎么取不到参数...

HttpClient请求网址返回javascript乱码

<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p>实现代码如下:</p> <pre name="code" class="java">public static String getHtml() { String response = ""; HttpClient client = new HttpClient(); HttpMethod method = new GetMethod("http://static1.mtime.cn/Utility/Data/TheaterListBoxData.m"); try { client.executeMethod(method); if (method.getStatusCode() == HttpStatus.SC_OK) { System.out.println(method.getResponseBodyAsString()); // response = method.getResponseBodyAsString(); } } catch (URIException e) { e.printStackTrace(); return null; } catch (IOException e) { e.printStackTrace(); return null; } finally { method.releaseConnection(); } return response; }</pre> <p> 请求这个路径http://static1.mtime.cn/Utility/Data/TheaterListBoxData.m就有问题,因为返回的是text/javascript;</p> <p>看到别人说说method.getResponseBodyAsStream()返回流,再设置流的字符编码,循环读取出来的也是乱码!</p> <p>求解决方案!</p> <p> </p> </div>

java怎么请求https获取响应的文件流呢?

现在有一个https的地址,请求这个地址后返回一个文件流,试着用了httpclient发送https请求,然后在返回的http实体中httpEntity.getContent获取到了一个Inputstream,接收了这个流后,没有任何东西返回。 有什么其他的办法吗?

使用java的Http请求里的Url对象调用第三方接口返回的数据中文乱码

URL url = new URL("http://apis.5118.com/morerank/baidupc"); // 将url 以 open方法返回的urlConnection 连接强转为HttpURLConnection连接 (标识一个url所引用的远程对象连接) // 此时cnnection只是为一个连接对象,待连接中 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置连接输出流为true,默认false (post 请求是以流的方式隐式的传递参数) connection.setDoOutput(true); // 设置连接输入流为true connection.setDoInput(true); // 设置请求方式为post connection.setRequestMethod("POST"); connection.setRequestProperty("Charsert", "UTF-8"); //设置请求编码 // post请求缓存设为false connection.setUseCaches(false); // 设置该HttpURLConnection实例是否自动执行重定向 connection.setInstanceFollowRedirects(true); // 设置请求头里面的各个属性 (以下为设置内容的类型,设置为经过urlEncoded编码过的from参数) // application/x-javascript text/xml->xml数据 application/x-javascript->json对象 application/x-www-form-urlencoded->表单数据 // ;charset=utf-8 必须要,不然妙兜那边会出现乱码【★★★★★】 //addRequestProperty添加相同的key不会覆盖,如果相同,内容会以{name1,name2} connection.addRequestProperty("from", "sfzh"); //来源哪个系统 //setRequestProperty添加相同的key会覆盖value信息 //setRequestProperty方法,如果key存在,则覆盖;不存在,直接添加。 //addRequestProperty方法,不管key存在不存在,直接添加。 connection.setRequestProperty("Authorization", " APIKEY D9FD7C014E8E4367B2891EF5B4B493"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // 建立连接 (请求未开始,直到connection.getInputStream()方法调用时才发起,以上各个参数设置需在此方法之前进行) connection.connect(); // 创建输入输出流,用于往连接里面输出携带的参数,(输出内容为?后面的内容) DataOutputStream dataout = new DataOutputStream(connection.getOutputStream()); // 格式 parm = aaa=111&bbb=222&ccc=333&ddd=444 String parm = "taskid="+taskid; System.out.println("传递参数:" + parm); // 将参数输出到连接 dataout.writeBytes(parm); // 输出完成后刷新并关闭流 dataout.flush(); dataout.close(); // 重要且易忽略步骤 (关闭流,切记!) //System.out.println(connection.getResponseCode()); // 连接发起请求,处理服务器响应 (从连接获取到输入流并包装为bufferedReader) BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); String line; StringBuilder sb = new StringBuilder(); // 用来存储响应数据 // 循环读取流,若不到结尾处 while ((line = bf.readLine()) != null) { //sb.append(bf.readLine()); String lin=new String(line.getBytes(), "utf-8"); sb.append(lin); } bf.close(); // 重要且易忽略步骤 (关闭流,切记!) connection.disconnect(); // 销毁连接 return sb.toString(); 返回的数据中文乱码使用java的Http请求里的Url对象调用第三方接口返回的数据中文乱码

java请求https,在本地可以,在服务器端请求失败

java请求https,在本地可以,在服务器端请求失败,是服务器端失败哦! 自己的前提是请求的url是正确的。 附上https请求代码,请大神一看: ``` public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) { JSONObject jsonObject = null; StringBuffer buffer = new StringBuffer(); try { // 创建SSLContext对象,并使用我们指定的信任管理器初始化 TrustManager[] tm = { new MyX509TrustManager() }; SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); sslContext.init(null, tm, new java.security.SecureRandom()); // 从上述SSLContext对象中得到SSLSocketFactory对象 SSLSocketFactory ssf = sslContext.getSocketFactory(); URL url = new URL(requestUrl); HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection(); httpUrlConn.setSSLSocketFactory(ssf); httpUrlConn.setDoOutput(true); httpUrlConn.setDoInput(true); httpUrlConn.setUseCaches(false); // 设置请求方式(GET/POST) httpUrlConn.setRequestMethod(requestMethod); if ("GET".equalsIgnoreCase(requestMethod)) httpUrlConn.connect(); // 当有数据需要提交时 if (null != outputStr) { OutputStream outputStream = httpUrlConn.getOutputStream(); // 注意编码格式,防止中文乱码 outputStream.write(outputStr.getBytes("UTF-8")); outputStream.close(); } // 将返回的输入流转换成字符串 InputStream inputStream = httpUrlConn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null; while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } bufferedReader.close(); inputStreamReader.close(); inputStream.close(); inputStream = null; httpUrlConn.disconnect(); jsonObject = JSONObject.fromObject(buffer.toString()); } catch (ConnectException ce) { log.error("Weixin server connection timed out."); } catch (Exception e) { log.error("https request error:{}", e); } return jsonObject; } ```

http post请求,参数为什么默认转码发送?直接发送不是数据量更少吗?

http请求post方式时,默认采用application/x-www-form-urlencoded, 会对数据进行转码,可是转码会增加数据量,感觉没必要吧?

求大神解决从httpclient获取到JSON数据,展示到ListView遇到的问题

通过httpclient获取到JSON数据,展示到ListView遇到的问题,求大神帮帮忙看下 Error:(6, 23) 错误: 程序包org.apache.http不存在 Error:(7, 23) 错误: 程序包org.apache.http不存在 Error:(8, 30) 错误: 程序包org.apache.http.client不存在 Error:(9, 30) 错误: 程序包org.apache.http.client不存在 Error:(10, 38) 错误: 程序包org.apache.http.client.methods不存在 Error:(11, 35) 错误: 程序包org.apache.http.impl.client不存在 请问这些包要去哪下载 或者哪位大神有这些包 麻烦帮帮忙

如何在java里调用使用get方法,参数以application/x-www-form-urlencoded方式传递的web接口?

想要在java代码里调用一个web接口,该接口通过postman测试是可以成功的,如图: ![图片说明](https://img-ask.csdn.net/upload/201901/16/1547608544_517344.png) 但是以如下方式写在java代码里却无法成功,请问有人知道是为什么吗? ``` String path="http://192.168.1.93:9000/offer?calip=192.168.1.20&bmcip=192.168.1.11"; String data="calip=192.168.1.20&bmcip=192.168.1.11"; try { URL url = new URL(path); //打开和url之间的连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //请求方式,默认为get //设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); conn.setDoOutput(true); conn.setDoInput(true); conn.connect(); //获取URLConnection对象对应的输出流 PrintWriter out = new PrintWriter(conn.getOutputStream()); //发送请求参数即数据 out.print(data); //缓冲数据 out.flush(); out.close(); //获取URLConnection对象对应的输入流 InputStream is = conn.getInputStream(); //构造一个字符流缓存 BufferedReader br = new BufferedReader(new InputStreamReader(is)); String str = ""; while ((str = br.readLine()) != null) { System.out.println("from ipmi"+str); } //关闭流 is.close(); conn.disconnect(); System.out.println("发送结束"); } catch (Exception e) { e.printStackTrace(); } ```

java流字符乱码问题,求助!

地址https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443,结果为GBK编码,获取手机号码归属地以后,发现获得字符结果中中文乱码,麻烦大神指教,谢谢!以下提出部分代码。 HttpClient client = new DefaultHttpClient();//浏览器客户端 HttpGet request = new HttpGet(sb.toString());//get请求对象 HttpResponse response = client.execute(request);//执行请求 if(response.getStatusLine().getStatusCode() == 200){//判断请求是否成功 InputStream inputStream = response.getEntity().getContent();//获取实体 从实体里面获取流数据 ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while((len = inputStream.read(buffer)) != -1){ bos.write(buffer, 0, len); } result = bos.toString(); bos.close(); inputStream.close(); } return result; ``` ```

Java 访问 Https接口 忽略证书

``` /** * 证书信任管理器(用于https请求) * @date 2013-08-08 */ public class MyX509TrustManager implements X509TrustManager{ public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { } public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) { JSONObject jsonObject = null; StringBuffer buffer = new StringBuffer(); try { // 创建SSLContext对象,并使用我们指定的信任管理器初始化 TrustManager[] tm = { new MyX509TrustManager() }; SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); sslContext.init(null, tm, new java.security.SecureRandom()); // 从上述SSLContext对象中得到SSLSocketFactory对象 SSLSocketFactory ssf = sslContext.getSocketFactory(); URL url = new URL(requestUrl); HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection(); httpUrlConn.setSSLSocketFactory(ssf); httpUrlConn.setDoOutput(true); httpUrlConn.setDoInput(true); httpUrlConn.setUseCaches(false); // 设置请求方式(GET/POST) httpUrlConn.setRequestMethod(requestMethod); if ("GET".equalsIgnoreCase(requestMethod)) { httpUrlConn.connect(); } // 当有数据需要提交时 if (null != outputStr) { OutputStream outputStream = httpUrlConn.getOutputStream(); // 注意编码格式,防止中文乱码 outputStream.write(outputStr.getBytes("UTF-8")); outputStream.close(); } // 将返回的输入流转换成字符串 InputStream inputStream = httpUrlConn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null; while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } bufferedReader.close(); inputStreamReader.close(); // 释放资源 inputStream.close(); inputStream = null; httpUrlConn.disconnect(); jsonObject = JSONObject.parseObject(buffer.toString()); } catch (ConnectException ce) { ce.printStackTrace(); // log.error("Weixin server connection timed out."); } catch (Exception e) { //log.error("https request error:{}", e); e.printStackTrace(); } return jsonObject; } public static void main(String[] args) { System.err.println(httpRequest("https://moni.byxgj.com:23134", "GET", null)); ///createaccount?requestid=1&sa=sa07&sapass=c33&account=0&password=123456&name=张三&group=交易组1&mainaccount=21 } } ``` ``` javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching moni.byxgj.com found at sun.security.ssl.Alerts.getSSLException(Unknown Source) at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) at sun.security.ssl.Handshaker.fatalSE(Unknown Source) at sun.security.ssl.Handshaker.fatalSE(Unknown Source) at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source) at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source) at sun.security.ssl.Handshaker.processLoop(Unknown Source) at sun.security.ssl.Handshaker.process_record(Unknown Source) at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source) at com.wlq.test.MyX509TrustManager.httpRequest(MyX509TrustManager.java:57) at com.wlq.test.MyX509TrustManager.main(MyX509TrustManager.java:94) ``` 请问这个错怎么整?网上的方法全部测试过来了 ``` httpClient方法 报 javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated ``` ps:如果有直接可用demo,求分享

android客户端与服务端交互数据问题

下面是我的LoginActivity package textview.exam; import android.app.ActionBar; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import org.apache.http.client.HttpClient; import org.apache.http.impl.client.DefaultHttpClient; import java.util.HashMap; import java.util.Map; public class LoginActivity extends Activity { Button okbutton; EditText id; EditText pass; String uname; HttpClient httpClient; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); final ActionBar actionBar = getActionBar(); actionBar.hide(); httpClient=new DefaultHttpClient(); okbutton=(Button)findViewById(R.id.ok); okbutton.setOnClickListener(loginokListener); id = (EditText)findViewById(R.id.login_id); pass = (EditText)findViewById(R.id.login_password); Button loginback=(Button)findViewById(R.id.backlogin); loginback.setOnClickListener(backloginListener); } View.OnClickListener backloginListener=new View.OnClickListener() { @Override public void onClick(View v) { Intent in = getIntent(); in.putExtra( "result","欢迎登录家友" ); LoginActivity.this.setResult(1, in); LoginActivity.this.finish(); } }; View.OnClickListener loginokListener=new View.OnClickListener() { @Override public void onClick(View v) { // 执行输入校验 if (validate()) // ① { // 如果登录成功 if (loginPro()) // ② { Log.i("LoginServlet","1561161"); Intent in = getIntent(); in.putExtra( "result", uname ); LoginActivity.this.setResult(0, in); LoginActivity.this.finish(); } else { Toast.makeText(LoginActivity.this, "用户名或密码错误!", Toast.LENGTH_LONG).show(); } } } }; private boolean loginPro() { // 获取用户输入的用户名、密码 String uid = id.getText().toString(); String upass = pass.getText().toString(); try { uname=loginyanzheng(uid, upass); Log.i("服务器的问题"+uname,""); // 如果uname不为空 if (uname!=null) { return true; } } catch (Exception e) { Toast.makeText(this,"服务器响应异常,请稍后重试!", Toast.LENGTH_LONG).show(); e.printStackTrace(); } return false; } // 对用户输入的用户名、密码进行校验 private boolean validate() { String uid = id.getText().toString().trim(); if (uid.equals("")) { Toast.makeText(this,"账号不许为空!", Toast.LENGTH_LONG).show(); return false; } String upass = pass.getText().toString().trim(); if (upass.equals("")) { Toast.makeText(this,"请输入密码!", Toast.LENGTH_LONG).show(); return false; } return true; } // 定义发送请求的方法 private String loginyanzheng(String id, String pass) throws Exception { // 使用Map封装请求参数 Map<String, String> map = new HashMap<>(); map.put("id", id); map.put("pass", pass); Log.i("按时吃饭三coin啊搜in粗偶i","1"); // 定义发送请求的URL String url = HttpUtil.BASE_URL+"LoginServlet"; Log.i("爱上擦擦实现擦拭小","2"); // 发送请求 return HttpUtil.postRequest(url, map); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK ) { Intent in = getIntent(); in.putExtra( "result", "欢迎登录家友"); LoginActivity.this.setResult(1, in); LoginActivity.this.finish(); } return false; } //返回动画 protected void onPause() { super.onPause(); overridePendingTransition(R.anim.in_from_down, R.anim.out_to_up); } } 下面是我HttpUitl package textview.exam; import android.util.Log; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public class HttpUtil { // 创建HttpClient对象 public static HttpClient httpClient = new DefaultHttpClient(); public static final String BASE_URL = "http://192.168.1.88:8888/auction/android/"; /** * * @param url 发送请求的URL * @return 服务器响应字符串 * @throws Exception */ public static String getRequest(final String url) throws Exception { FutureTask<String> task = new FutureTask<String>( new Callable<String>() { @Override public String call() throws Exception { // 创建HttpGet对象。 HttpGet get = new HttpGet(url); // 发送GET请求 HttpResponse httpResponse = httpClient.execute(get); // 如果服务器成功地返回响应 if (httpResponse.getStatusLine() .getStatusCode() == 200) { // 获取服务器响应字符串 String result = EntityUtils .toString(httpResponse.getEntity()); return result; } return null; } }); new Thread(task).start(); return task.get(); } /** * @param url 发送请求的URL * @param请求参数 * @return 服务器响应字符串 * @throws Exception */ public static String postRequest(final String url , final Map<String ,String> rawParams)throws Exception { FutureTask<String> task = new FutureTask<String>( new Callable<String>() { @Override public String call() throws Exception { // 创建HttpPost对象。 HttpPost post = new HttpPost(url); // 如果传递参数个数比较多的话可以对传递的参数进行封装 List<NameValuePair> params = new ArrayList<>(); for(String key : rawParams.keySet()) { //封装请求参数 params.add(new BasicNameValuePair(key , rawParams.get(key))); } // 设置请求参数 post.setEntity(new UrlEncodedFormEntity( params, "gbk")); // 发送POST请求 HttpResponse httpResponse = httpClient.execute(post); Log.i("所发生的初三大四","按时打算"); // 如果服务器成功地返回响应 if (httpResponse.getStatusLine() .getStatusCode() == 200) { // 获取服务器响应字符串 String result = EntityUtils .toString(httpResponse.getEntity()); return result; } Log.i("暗示法撒旦吃撒多长","按时打算"); return null; } }); new Thread(task).start(); return task.get(); } } 下面是我服务端Servlet代码 package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.factory.DAOFactory; import vo.Users; public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=GBK"); request.setCharacterEncoding("utf-8"); Users users = new Users(); //客户端的账号以及密码 users.setUserid(request.getParameter("id")); users.setUpwd(request.getParameter("pass")); try { if(DAOFactory.getUserDAOInstance().findLogin(users)){ request.getSession().setAttribute("name", users.getUname()); //request.getRequestDispatcher("index.jsp").forward(request, response); //向客户端发送字符串 response.getWriter().println("aisd"); System.out.println("登录成功"); } else{ response.getWriter().print("对不起,用户名、密码不符合!"); System.out.println("对不起,用户名、密码不符合!"); } } catch (Exception e) { e.printStackTrace(); } } }

怎么请求聚合数据的数据,求一个demo,谢谢各位大神

我自己做的请求不出来数据,下面上一个类的代码。请大神指点指点 package com.action; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import org.apache.commons.httpclient.util.HttpURLConnection; import net.sf.json.JSONObject; import android.app.Activity; import android.os.*; import android.view.*; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class Hanziqigua extends Activity{ /***********************/ public static final String DEF_CHATSET = "UTF-8"; public static final int DEF_CONN_TIMEOUT = 30000; public static final int DEF_READ_TIMEOUT = 30000; public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"; String url ="http://v.juhe.cn/xhzd/query";//请求接口地址 /***********************/ private EditText hzText; private Button hzStartbt; private TextView hzTextBegin; public static final String APPKEY ="4e60f85fda2216b3d39f106204bb8c3d"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.hanziqigua_layout); /***控件初始化*/ hzText = (EditText) findViewById(R.id.hzText); hzStartbt = (Button) findViewById(R.id.hzStartbt); hzTextBegin = (TextView) findViewById(R.id.hzTextBegin); /***/ hzStartbt.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { /***拆分字符串*/ String textBegin=hzText.getText().toString(); final String textBeginOne=textBegin.substring(0,1); final String textBeginTwo=textBegin.substring(1,2); /***/ System.out.println("第一个字 -->"+textBeginOne); System.out.println("第二个字 -->"+textBeginTwo); /***********/ /***********网络请求****************/ /***********第一个字的地址**********/ final String newUrlone = url + "?" + "key=" + APPKEY + "&" + "word=" + textBeginOne; System.out.println("new url -- > "+ newUrlone); /***********************************/ /***********第二个字的地址***********/ final String newUrltwo = url + "?" + "key=" + APPKEY + "&" + "word=" + textBeginOne; System.out.println("new url -- > "+ newUrltwo); /***********************************/ String result =null; String url ="https://v.juhe.cn/xhzd/query";//请求接口地址 Map params = new HashMap();//请求参数 params.put("word",newUrlone);//填写需要查询的汉字,UTF8 urlencode编码 params.put("key",APPKEY);//应用APPKEY(应用详细页查询) params.put("dtype","");//返回数据的格式,xml或json,默认json try { result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(object.getInt("error_code")==0){ System.out.println(object.get("result")); }else{ System.out.println(object.get("error_code")+":"+object.get("reason")); } } catch (Exception e) { e.printStackTrace(); } /***********************************/ } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } /**************************************************************************************/ /** * * @param strUrl 请求地址 * @param params 请求参数 * @param method 请求方法 * @return 网络请求字符串 * @throws Exception */ public static String net(String strUrl, Map params,String method) throws Exception { HttpURLConnection conn = null; BufferedReader reader = null; String rs = null; try { StringBuffer sb = new StringBuffer(); if(method==null || method.equals("GET")){ strUrl = strUrl+"?"+urlencode(params); } URL url = new URL(strUrl); conn = (HttpURLConnection) url.openConnection(); if(method==null || method.equals("GET")){ conn.setRequestMethod("GET"); }else{ conn.setRequestMethod("POST"); conn.setDoOutput(true); } conn.setRequestProperty("User-agent", userAgent); conn.setUseCaches(false); conn.setConnectTimeout(DEF_CONN_TIMEOUT); conn.setReadTimeout(DEF_READ_TIMEOUT); conn.setInstanceFollowRedirects(false); conn.connect(); if (params!= null && method.equals("POST")) { try { DataOutputStream out = new DataOutputStream(conn.getOutputStream()); out.writeBytes(urlencode(params)); } catch (Exception e) { // TODO: handle exception } } InputStream is = conn.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET)); String strRead = null; while ((strRead = reader.readLine()) != null) { sb.append(strRead); } rs = sb.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { reader.close(); } if (conn != null) { conn.disconnect(); } } return rs; } //将map型转为请求参数型 public static String urlencode(Map<String,Object>data) { StringBuilder sb = new StringBuilder(); for (Map.Entry i : data.entrySet()) { try { sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return sb.toString(); } /**************************************************************************************/ }

java爬蟲新手問題Illegal character in path at index 38

写了一个简单的爬虫程序爬京东,之前是可以运行的,现在每次爬到固定的url就开始报错,附错误信息,部分代码段。 Exception in thread "main" java.lang.IllegalArgumentException: Illegal character in path at index 38: http://vip.jd.com/fuli/detail/791.html public String getContent(CrawlerUrl url) throws Exception { String content = null; String urlString = url.getUrlString(); CloseableHttpClient httpclient = HttpClients.createDefault(); // 以下代码是参考httpclient官方给出的下载网页示例代码 try { HttpGet httpget = new HttpGet(urlString); CloseableHttpResponse response = httpclient.execute(httpget); try { int statusCode = response.getStatusLine().getStatusCode(); HttpEntity entity = response.getEntity(); if ((statusCode == HttpStatus.SC_OK) && (entity != null)) { entity = new BufferedHttpEntity(entity); StringBuilder sb = new StringBuilder(); String contentType = entity.getContentType().toString(); int charsetStart = contentType.indexOf("charset="); if (charsetStart != -1) { // 读取字符流 String charset = contentType.substring(charsetStart + 8); BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), charset)); int c; while ((c = reader.read()) != -1) sb.append((char) c); reader.close(); } else { // 先解析html文件的前几行获取字符编码,设置好编码格式,再解析html文件的全部内容 BufferedReader FiestReader = new BufferedReader(new InputStreamReader(entity.getContent())); String charset = null; String line = null; int charsetStartInHtml; while ((line = FiestReader.readLine()) != null) { charsetStartInHtml = line.indexOf("charset="); if (charsetStartInHtml != -1) { Matcher charsetMatcher = charsetRegexp.matcher(line); while (charsetMatcher.find()) charset = charsetMatcher.group(1); break; } } FiestReader.close(); BufferedReader SecondReader = new BufferedReader(new InputStreamReader(entity.getContent(), charset)); int c; while ((c = SecondReader.read()) != -1) sb.append((char) c); SecondReader.close(); } content = sb.toString(); } } finally { response.close(); } } finally { httpclient.close(); } visitedUrls.put(url.getUrlString(), url); url.setIsVisited(); // System.out.println(content); return content; } 对代码有什么意见也可以提出来,谢谢大神

httppost = new HttpPost(Uri) 返回值为null! 不知道为什么

RT http.java public class Http { static HttpEntity entity; //HttpEntity是可以同Http消息进行接受或发送的实体,可以是流或者字符串 static HttpResponse response; //HttpResponse是一个Http连接响应,可以通过它来获得一些响应的信息 static HttpPost httppost; static HttpClient httpclient; static Context context; public String strResult; public String Get(String Uri) { return null; } public String Post(final String Uri, final List<NameValuePair> params) { new Thread() { @Override public void run() { // TODO Auto-generated method stub try { //客户端数据打包 httpclient = new DefaultHttpClient();//新建httpclient对象, 默认的Http客户端,可以用它来创建HTTP连接 httppost = new HttpPost(Uri); //新建httppost对象, 连接url httppost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); //客户端发送数据请求,并得到服务器返回数据 response = httpclient.execute(httppost); //获取HttpResponse实例 entity = response.getEntity(); // 得到内容 if (response.getStatusLine().getStatusCode() == 200) { // 取出回应字串 strResult = EntityUtils.toString(response.getEntity()); } } catch (Exception e) { e.printStackTrace();// 报错识别 } super.run(); } }.start(); return strResult; } } NetUtil。java public class NetUitl { public String register(String Username, String Password,String Idcard,String Name,String Sex,int Tel) { String Uri = "http://127.0.0.1:8080/Client/Register"; String tel=String.valueOf(Tel); ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("Username", Username)); params.add(new BasicNameValuePair("Password", Password)); params.add(new BasicNameValuePair("Idcard", Idcard)); params.add(new BasicNameValuePair("Sex", Sex)); params.add(new BasicNameValuePair("Realname", Name)); params.add(new BasicNameValuePair("Tel", tel)); return new Http().Post(Uri, params); } register。java public class register extends Activity { EditText username,password,idcard,name,sex,time,tel; Button register,login; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.register); username=(EditText) findViewById(R.id.zhuceusername); password=(EditText) findViewById(R.id.zhucepassword); idcard=(EditText) findViewById(R.id.zhuceidcard); name=(EditText) findViewById(R.id.zhucename); sex=(EditText) findViewById(R.id.zhucesex); tel=(EditText) findViewById(R.id.zhucetel); register=(Button) findViewById(R.id.zhuce); login=(Button) findViewById(R.id.denglu); new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub register.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub try{ if(!username.getText().toString().equals("")&&!password.getText().toString().equals("")&& !idcard.getText().toString().equals("")&&!name.getText().toString().equals("")&& !sex.getText().toString().equals("")&&!tel.getText().toString().equals("")){ String f=new NetUitl().register(username.getText().toString(),password.getText().toString(), idcard.getText().toString(), name.getText().toString(), sex.getText().toString(), Integer.valueOf(tel.getText().toString())); if(f.equals("true")){ Intent intent=new Intent(register.this,zhucesuccess.class); startActivity(intent); finish();} }else{ Toast.makeText(register.this, "内容不能为空!", Toast.LENGTH_SHORT).show();} }catch(Exception e){ Toast.makeText(register.this, "注册失败,服务器连接错误", Toast.LENGTH_SHORT).show(); }}}); }}).start(); login.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent=new Intent(register.this,Login.class); startActivity(intent); } }); } } 就是注册不成功,求大神帮帮忙 我补充一下,我执行register.java的register的click事件后,会报String f=new NetUitl().register(...)空指针,我debug后,发现原来是http.java文件中httppost = new HttpPost(Uri);空指针。

android studio 与后台交互问题 网络访问的问题

url返回了我需要的值 只有我在控制台点击url的时候 服务器端才会有反应 HttpResponse response = httpClient.execute(httpGet);不执行 代码如下: package com.cy.mynj.com.cy.mynj.login; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.cy.mynj.R; import com.cy.mynj.com.cy.mynj.activities.MainActivity; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; public class LoginActivity extends AppCompatActivity implements View.OnClickListener{ private EditText et_phone; private EditText et_password; private Button btn_login; private TextView tv_login_register; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); initViews(); } private void initViews() { et_phone=(EditText)findViewById(R.id.et_phone); et_password=(EditText)findViewById(R.id.et_password); btn_login=(Button)findViewById(R.id.btn_login); btn_login.setOnClickListener(this); tv_login_register=(TextView)findViewById(R.id.tv_login_register); tv_login_register.setOnClickListener(this); tv=(TextView)findViewById(R.id.tv); } @Override public void onClick(View view) { String phone = et_phone.getText().toString(); String password=et_password.getText().toString(); System.out.println(phone + "," + password); System.out.println("按钮点击的线程的名字为:" + Thread.currentThread().getName()); Mythread mythread= new Mythread(phone,password); mythread.start(); } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); tv.setText(Thread.currentThread().getName() + msg.obj); // 在把这个字符串变成一个JSONObejct try { JSONObject obj = new JSONObject(msg.obj.toString()); String value = obj.getString("loginstate"); System.out.println("value-->" + value); if (value.equals("success")) { Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); } else { Toast.makeText(LoginActivity.this, "登录失败",Toast.LENGTH_SHORT ).show(); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; private class Mythread extends Thread { private String phone; private String password; public Mythread(String phone, String password) { this.phone = phone; this.password = password; } @Override public void run () { // 在线程中请求服务器的资源 // Apache HttpClient // 1.创建HttpClient对象 HttpClient httpClient = new DefaultHttpClient(); Log.d("test", "t0"); // 2.构建请求的URL String url = "http://172.20.10.3:8080/appnews/user?phone=" + phone + "&password=" + password + "&operator=login"; // String url = "http://10.0.2.2:8080/appnews/servlet/StudentServlet"; // 3.创建HttpGet请求的对象 HttpGet httpGet = new HttpGet(url); Log.d("test4", "t4"); // 4.使用创建的httpClient执行这个httpGet请求 try { HttpResponse response = httpClient.execute(httpGet); Log.d("test3", "t3"); // 5.判断服务器端请求和应答是否成功 if (response.getStatusLine().getStatusCode() == 200) { System.out.println("请求和应答成功"); // 服务器端传输的数据的一个android封装的对象 HttpEntity entity = response.getEntity(); String msg = EntityUtils.toString(entity, "UTF-8"); System.out.println("server-->" + msg); // 在android中,子线程不能更新界面组件的值, // 因为界面组件是单线程模型,必须回到主线程更新组件的值。 // tv.setText(msg); // 构建消息对象 Message smsg = new Message(); smsg.obj = msg; handler.sendMessage(smsg); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block Log.d("test5", "t5"); e.printStackTrace(); } } } }

HttpURLConnection获取网页源码 网址太长不能正确获取数据

我用HttpURLConnection获取网页源码 当网址比较长的时候就无法正确连接到网页是怎么回事? 代码如下: private String getURLResponse(String urlString){ HttpURLConnection conn = null; //连接对象 InputStream is = null; String resultData = ""; try { URL url = new URL(urlString); //URL对象 conn = (HttpURLConnection)url.openConnection(); //使用URL打开一个链接 conn.setDoInput(true); //允许输入流,即允许下载 conn.setDoOutput(true); //允许输出流,即允许上传 conn.setUseCaches(false); //不使用缓冲 conn.setRequestMethod("GET"); //使用get请求 is = conn.getInputStream(); //获取输入流,此时才真正建立链接 InputStreamReader isr = new InputStreamReader(is); BufferedReader bufferReader = new BufferedReader(isr); String inputLine = ""; while((inputLine = bufferReader.readLine()) != null){ resultData += inputLine + "\n"; } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(is != null){ try { is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn != null){ conn.disconnect(); } } return resultData; } }

Android:通过url传递参数

<div class="post-text" itemprop="text"> <p>I want to insert some data into a database using a http post request. My post.php page is:</p> <pre><code> if(trim($_GET['param1'])!="" &amp;&amp; trim($_GET['param2'])!="" &amp;&amp; trim($_GET['param3'])!="" &amp;&amp; trim($_GET['param4'])!="" &amp;&amp; trim($_GET['param5'])!="") { $connectionInfo = array( "UID" =&gt; $DB_USER, "PWD" =&gt; $DB_PASS, "Database"=&gt;$DB_DATABASE ); $con = sqlsrv_connect($DB_SERVER,$connectionInfo); if(!$con) { die('Could not connect: ' . sqlsrv_errors()); } $query="INSERT INTO Table (param1,param2,param3,param4,param5) VALUES ( '".$_GET['param1']."', ".$_GET['param2'].", ".$_GET['param3'].", '".$_GET['param4']."', ".$_GET['param5'].")"; [...] </code></pre> <p>and in order to send data, I append all the parameters to the url, like: <code>http://&lt;myip&gt;/MySite/post.php?param2=10&amp;param3=8&amp;param1=2012-12-01 13:00:00&amp;param4=Name&amp;param5=80</code></p> <p>and everything works fine, but when I try to send my data from my Android application I could not achive my target. How can I pass data via url? In Android I've tried:</p> <pre><code> HttpPost httppost = new HttpPost("http://&lt;Myip&gt;/MySite/post.php"); List&lt;NameValuePair&gt; nameValuePairs = new ArrayList&lt;NameValuePair&gt;(5); nameValuePairs.add(new BasicNameValuePair("param2", "10")); nameValuePairs.add(new BasicNameValuePair("param3", "98")); nameValuePairs.add(new BasicNameValuePair("param1", "2012-12-01 13:00:00")); nameValuePairs.add(new BasicNameValuePair("param4", "Name")); nameValuePairs.add(new BasicNameValuePair("param5", "50")); //httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); httppost.setHeader("Content-Type", "application/x-www-form-urlencoded"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); // Execute HTTP Post Request HttpResponse response = httpclient.execute(httppost) </code></pre> <p>and with:</p> <pre><code>String urlParameters = "param1=2012-12-01 13:00:00&amp;param2=b&amp;param3=c..."; String request = "http://&lt;Myip&gt;/MySite/post.php"; URL url = new URL(request); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setInstanceFollowRedirects(false); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); connection.setRequestProperty("charset", "utf-8"); connection.setRequestProperty("Content-Length", "" Integer.toString(urlParameters.getBytes().length)); connection.setUseCaches (false); DataOutputStream wr = new DataOutputStream(connection.getOutputStream ()); wr.writeBytes(urlParameters); wr.flush(); wr.close(); connection.disconnect(); </code></pre> <p>but I always get errors. Using second method the exception is:</p> <pre><code>12-17 18:08:26.617: E/AndroidRuntime(4837): FATAL EXCEPTION: main 12-17 18:08:26.617: E/AndroidRuntime(4837): android.os.NetworkOnMainThreadException 12-17 18:08:26.617: E/AndroidRuntime(4837): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.io.IoBridge.connect(IoBridge.java:112) 12-17 18:08:26.617: E/AndroidRuntime(4837): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 12-17 18:08:26.617: E/AndroidRuntime(4837): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 12-17 18:08:26.617: E/AndroidRuntime(4837): at java.net.Socket.connect(Socket.java:842) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.net.http.HttpConnection.&lt;init&gt;(HttpConnection.java:77) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.net.http.HttpConnection.&lt;init&gt;(HttpConnection.java:50) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) 12-17 18:08:26.617: E/AndroidRuntime(4837): at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:188) 12-17 18:08:26.617: E/AndroidRuntime(4837): at com.example.applic.applic.postData(MyApp.java:197) 12-17 18:08:26.617: E/AndroidRuntime(4837): at com.example.applic.applic$1.run(MyApp.java:127) 12-17 18:08:26.617: E/AndroidRuntime(4837): at android.os.Handler.handleCallback(Handler.java:605) 12-17 18:08:26.617: E/AndroidRuntime(4837): at android.os.Handler.dispatchMessage(Handler.java:92) 12-17 18:08:26.617: E/AndroidRuntime(4837): at android.os.Looper.loop(Looper.java:137) 12-17 18:08:26.617: E/AndroidRuntime(4837): at android.app.ActivityThread.main(ActivityThread.java:4514) 12-17 18:08:26.617: E/AndroidRuntime(4837): at java.lang.reflect.Method.invokeNative(Native Method) 12-17 18:08:26.617: E/AndroidRuntime(4837): at java.lang.reflect.Method.invoke(Method.java:511) 12-17 18:08:26.617: E/AndroidRuntime(4837): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 12-17 18:08:26.617: E/AndroidRuntime(4837): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 12-17 18:08:26.617: E/AndroidRuntime(4837): at dalvik.system.NativeStart.main(Native Method) </code></pre> <p>What can I do?</p> </div>

学Python后到底能干什么?网友:我太难了

感觉全世界营销文都在推Python,但是找不到工作的话,又有哪个机构会站出来给我推荐工作? 笔者冷静分析多方数据,想跟大家说:关于超越老牌霸主Java,过去几年间Python一直都被寄予厚望。但是事实是虽然上升趋势,但是国内环境下,一时间是无法马上就超越Java的,也可以换句话说:超越Java只是时间问题罢。 太嚣张了会Python的人!找工作拿高薪这么简单? https://edu....

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

为什么程序猿都不愿意去外包?

分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助

Java校招入职华为,半年后我跑路了

何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...

这些插件太强了,Chrome 必装!尤其程序员!

推荐 10 款我自己珍藏的 Chrome 浏览器插件

@程序员:GitHub这个项目快薅羊毛

今天下午在朋友圈看到很多人都在发github的羊毛,一时没明白是怎么回事。 后来上百度搜索了一下,原来真有这回事,毕竟资源主义的羊毛不少啊,1000刀刷爆了朋友圈!不知道你们的朋友圈有没有看到类似的消息。 这到底是啥情况? 微软开发者平台GitHub 的一个区块链项目 Handshake ,搞了一个招募新会员的活动,面向GitHub 上前 25万名开发者派送 4,246.99 HNS币,大约价...

用python打开电脑摄像头,并把图像传回qq邮箱【Pyinstaller打包】

前言: 如何悄悄的打开朋友的摄像头,看看她最近过的怎么样,嘿嘿!这次让我带你们来实现这个功能。 注: 这个程序仅限在朋友之间开玩笑,别去搞什么违法的事情哦。 代码 发送邮件 使用python内置的email模块即可完成。导入相应的代码封装为一个send函数,顺便导入需要导入的包 注: 下面的代码有三处要修改的地方,两处写的qq邮箱地址,还有一处写的qq邮箱授权码,不知道qq邮箱授权码的可以去百度一...

做了5年运维,靠着这份监控知识体系,我从3K变成了40K

从来没讲过运维,因为我觉得运维这种东西不需要太多的知识面,然后我一个做了运维朋友告诉我大错特错,他就是从3K的运维一步步到40K的,甚至笑着说:我现在感觉自己什么都能做。 既然讲,就讲最重要的吧。 监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。目前业界有很多不错的开源产品可供选择。选择一款开源的监控系统,是一个省时省力、效率最高的方...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux系统的最常用命令你了解多少呢?

Linux系统的最常用命令第一组 用户管理类命令1.添加用户2.修改密码3.删除用户4.切换用户5.添加用户组6.删除用户组第二组 文件与目录类命令1.查看目录2.改变工作目录3.复制文件、目录4.移动或改名5.删除文件、目录6.改变文件权限7.创建目录8.新建文件9.查看目录大小10.查看当前路径第三组 压缩打包类命令压缩解压1.压缩解压--gzip2.压缩解压--bzip23.压缩解压--ta

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

立即提问
相关内容推荐