现在的位置: 首页 > 编程语言 > 正文

Android学习笔记—27_网络通信之通过GET和POST方式提交参数给web应用,以及使用httpClient,来给web项目以post方式发送参数

2019年09月19日 编程语言 ⁄ 共 21902字 ⁄ 字号 评论关闭
Android学习笔记---27_网络通信之通过GET和POST方式提交参数给web应用,以及使用httpClient,来给web项目以post方式发送参数
27_网络通信之通过GET和POST方式提交参数给web应用
-------------------------------------------------
1.把数据提交到web应用中:
  应用的界面:
  视频名称:
  text框
  时长:
  text框
  button:保存
b.当用户点击保存的时候,会把这两项参数,提交到web应用中.
----------------------
  这个地址是用来测试的,当用户访问这个地址的时候,会在控制台上打印出:
  视频名称:xiaofeng
  时长:80
------------------------------
 ManagerServlet
 public class ManagerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
String title= request.getParameter("title");
String timelength=request.getParameter("timelength");
System.out.println("视频名称:"+title);
System.out.println("时长:"+timelength);
}
说明可以正常接收参数.
---------------------------------------------------------
3.当数据小于2kb的时候,可以使用get,post方法往web应用传输数据,当数据大于2kb的时候
  最好使用post方法传输数据,因为,很多服务器对地址栏传输的数据长度是有限制的,一般
  为2kb,当大于2kb的时候,会截取.那么就会出现数据不能完全接收的情况
--------------------------------------------------------------------
4.a.把刚刚实现的android部署到模拟器上
  b.打开tomcat服务器
  c.在应用上填写参数点击保存
  d.看控制台信息:
    视频名称:xixi
    时长:87
    视频名称: 
    时长:87
  e.问题:当输入中文的时候出现乱码
-------------------------------------------------------
5.乱码问题的解决:
  a.乱码产生的原因:在提交时候,没有对中文参数进行URL编码
  b.Tomcat服务器默认采用的事ISO8859-1编码得到的参数值
-----------------------------------------------------------
6.03-23 14:49:02.514: WARN/System.err(690): java.net.SocketException: Permission  
 denied
//权限不够,没有添加访问网络的权限.
-------------------------------------------
7.url.append(URLEncoder.encode(entry.getValue(), coding));//这样可以解决对中文
  参数进行编码的问题.
----------------------------------
8.下面是使用android应用程序,利用get,set方法,给web服务器传送数据的所有代码
----------------------------------------------------------------------
11.在代码中:
   String title= request.getParameter("title");
    title=new String(title.getBytes("ISO8859-1"),"UTF-8") ;
   如果程序中有大量的参数需要解码,那么会写很多这种代码,很麻烦,所以可以使用过滤器
   进行处理
-------------------------------------------------
12.新建过滤器Filter,在项目名上,右键新建Filter,然后输入所在包名和类名(Filter名)
   点击NEXT,在filter mapping标签下,点击Add,然后输入/*,表示对所有路径过滤
-----------------------------------------------------------------------------
2013-03-26
-----------------
1.编写过滤器,然后测试,首先执行web应用,然后运行android程序,输入点击提交后
  将通过get方式给web应用传值.
-----------------------------------------------
2.在这个过程中使用源码如下:
 a.新建Android项目:NewsGetSetManager
 b./NewsGetSetManager/src/com/credream/newmanager/NewsGetSetManagerActivity.java
   package com.credream.newmanager;
import com.credream.service.NewsService;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class NewsGetSetManagerActivity extends Activity {
 
   /** Called when the activity is first created. */
 private
EditText titleText;
 
private
EditText timelengthText;
 
@Override
   
 public void onCreate(Bundle savedInstanceState) 
super.onCreate(savedInstanceState);
     
   setContentView(R.layout.main);
  
     titleText=(EditText) this.findViewById(R.id.title);
  
    timelengthText= (EditText)this.findViewById(R.id.timelength);
  
  }
    
   
 public void save(View v){
    
String title= titleText.getText().toString();
    
String length=timelengthText.getText().toString();
    
boolean result=NewsService.save(title,length);//用这样业务类,进行保存
    
if(result){
    
Toast.makeText(getApplicationContext(), R.string.success, 1).show();
    
}else {
Toast.makeText(getApplicationContext(), R.string.error, 1).show();
}
   
 }
}
-------------------------------------------------------------------------------
c./NewsGetSetManager/src/com/credream/service/NewsService.java
package com.credream.service;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
public class NewsService
{
/**
 * 保存数据
 * @param title 标题
 * @param length 时长
 * @return
 */
public static boolean save(String title, String length)
{
String 
   Map<String, String>  params=new HashMap<String, String>();
   params.put("title", title);
   params.put("timelength", length);
   try{
//return sendGetRequest(path,params);
return sendGetRequest(path,params,"UTF-8");
   }catch(Exception e){
   e.printStackTrace();
   }
   return false;
   }
title=xiaofeng&timelength=80
/**
 * 发送GET请求
 * @param path 请求路径
 * @param params 请求参数
 * @return  请求是否成功
 * @throws Exception 
 */
//private static boolean sendGetRequest(String path,Map<String, String> 
params)throws Exception{
//没有修改前会出现乱码
private static boolean sendGetRequest(String path,Map<String, String> 
params,String coding)throws Exception{
StringBuilder url=new StringBuilder(path);
url.append("?");
for(Map.Entry<String, String> entry:params.entrySet()){
url.append(entry.getKey()).append("=");
//url.append(entry.getValue());
url.append(URLEncoder.encode(entry.getValue(), coding));
//乱码的第一个因素,对传来的字符串进行编码
//
url.append("&");
}
url.deleteCharAt(url.length()-1);
HttpURLConnection conn=(HttpURLConnection)new URL(url.toString
()).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200){
return true;
}
return false;
}
}
----------------------------------------------------------------------
d./NewsGetSetManager/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
    package="com.credream.newmanager"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="8" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".NewsGetSetManagerActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 <!--访问网络权限-->
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>
---------------------------------------------------------------------------
e./NewsGetSetManager/res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/title" />
    <EditText 
          android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/title"
        />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/timelength" />
     
    <EditText 
          android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:numeric="integer"
        android:id="@+id/timelength"
        />
    <!--  android:numeric="integer",指定时长只能输入整形的数据 -->
    
    <Button 
          android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button"
       android:onClick="save"
        android:id="@+id/button"
        />
    <!-- android:id="@+id/button"当点击button的时候执行这个方法 -->
</LinearLayout>
-----------------------------------------------------------
f./NewsGetSetManager/res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, NewsGetSetManagerActivity!</string>
    <string name="app_name">利用getSet方法给web应用传值</string>
    <string name="title">视频标题</string>
    <string name="timelength">时长</string>
    <string name="button">保存</string>
    <string name="success">保存成功</string>
    <string name="error">保存失败</string>
</resources>
-----------------------------------------------------------------------------
3.下面是web项目:
 a.新建web项目:WebGetSetTest
 b./WebGetSetTest/src/com/credram/servlet/ManagerServlet.java
  package com.credram.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class ManagerServlet
 */
public class ManagerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
String title= request.getParameter("title");
   //当使用了filter就没必要再转码了:
//title=new String(title.getBytes("ISO8859-1"),"UTF-8") ;
//1.这样可以使得tomcat改变以iso8859-1的编码对接收到的数据进行解码
.以解决乱码问题
String timelength=request.getParameter("timelength");
System.out.println("视频名称:"+title);
System.out.println("时长:"+timelength);
}
/**
 * @see HttpServlet#doPost(HttpServletRequest request, 
HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
---------------------------------------------------------
c./WebGetSetTest/src/com/credream/filter/EncodingFilter.java
package com.credream.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class EncodingFilter implements Filter {
public void destroy() {
// 销毁的时候调用
}
 
public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException {
 //每一次请求到来的时候都会调用这个方法
HttpServletRequest req=(HttpServletRequest) request;
if("GET".equals(req.getMethod())){
EncodingHttpServletRequest wrapper=new 
EncodingHttpServletRequest(req);
chain.doFilter(wrapper, response);
}else {
chain.doFilter(request, response);
}
//--request请求对象--->Filter--->wrapper包装后的request对象--
>servlet-->这时候调用的request是包装后的request
}
 
public void init(FilterConfig fConfig) throws ServletException {
// 当web应用启动的时候就会调用这个方法
}
}
--------------------------------------------------------------------------
d./WebGetSetTest/src/com/credream/filter/EncodingHttpServletRequest.java
package com.credream.filter;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class EncodingHttpServletRequest extends HttpServletRequestWrapper
{
private HttpServletRequest request;
public EncodingHttpServletRequest(HttpServletRequest request)
{
super(request);
 this.request=request;
}
@Override
public String getParameter(String name)
{
String value=request.getParameter(name);
if(value!=null){
try
{
value=new String(value.getBytes("ISO8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
return value;
}
}
--------------------------------------------------------
e./WebGetSetTest/WebContent/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
  <display-name>VideoNews</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>ListServlet</display-name>
    <servlet-name>ListServlet</servlet-name>
    <servlet-class>com.credram.servlet.ListServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ListServlet</servlet-name>
    <url-pattern>/ListServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>ManagerServlet</display-name>
    <servlet-name>ManagerServlet</servlet-name>
    <servlet-class>com.credram.servlet.ManagerServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ManagerServlet</servlet-name>
    <url-pattern>/ManagerServlet</url-pattern>
  </servlet-mapping>
  <filter>
  <filter-name>myfilter</filter-name>
  <filter-class>com.credream.filter.EncodingFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>myfilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
--------------------------
这样就可以完全解决这个问题.
-----------------------------------------------------------------
5.下面用post的方式给web项目传值:
-----------------------------------------
6.需要了解http协议.
-------------------------
7.这里可以通过http watch了解协议内容:
---------------------------------------------
HTTP协议详解之请求篇 
    http请求由三部分组成,分别是:请求行、消息报头、请求正文
 
1、请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下
:Method Request-URI HTTP-Version CRLF  
 其中 Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的
HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字
符)。
 
请求方法(所有方法全为大写)有多种,各个方法的解释如下:
 GET     请求获取Request-URI所标识的资源
 POST    在Request-URI所标识的资源后附加新的数据
 HEAD    请求获取由Request-URI所标识的资源的响应消息报头
 PUT     请求服务器存储一个资源,并用Request-URI作为其标识
 DELETE  请求服务器删除Request-URI所标识的资源
 TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
 CONNECT 保留将来使用
 OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
 应用举例:
 GET方法:在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获
取资源,eg:GET /form.html HTTP/1.1 (CRLF)
 
POST方法要求被请求服务器接受附在请求后面的数据,常用于提交表单。
 eg:POST /reg.jsp HTTP/ (CRLF)
 Accept:image/gif,image/x-xbit,... (CRLF)
 ...
 HOST:www.guet.edu.cn (CRLF)
 Content-Length:22 (CRLF)
 Connection:Keep-Alive (CRLF)
 Cache-Control:no-cache (CRLF)
 (CRLF)         //该CRLF表示消息报头已经结束,在此之前为消息报头
 user=jeffrey&pwd=1234  //此行以下为提交的数据
 
HEAD方法与GET方法几乎是一样的,对于HEAD请求的回应部分来说,它的HTTP头部中包含的信
息与通过GET请求所得到的信息是相同的。利用这个方法,不必传输整个资源内容,就可以得
到Request-URI所标识的资源的信息。该方法常用于测试超链接的有效性,是否可以访问,以
及最近是否更新。
----------------------------------------------------------
7.用post方式给web项目传值的所有源码
-------------------------------------------------------------------
a.只需修改Android项目NewsGetSetManager中的这个类:
/NewsGetSetManager/src/com/credream/service/NewsService.java
package com.credream.service;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import android.media.MediaRecorder.OutputFormat;
import android.provider.ContactsContract.Contacts.Data;
public class NewsService
{
/**
 * 保存数据
 * @param title 标题
 * @param length 时长
 * @return
 */
public static boolean save(String title, String length)
{
String 
   Map<String, String>  params=new HashMap<String, String>();
   params.put("title", title);
   params.put("timelength", length);
   try{
//return sendGetRequest(path,params);
//return sendGetRequest(path,params,"UTF-8");
   return sendPOSTRequest(path,params,"UTF-8");
   }catch(Exception e){
   e.printStackTrace();
   }
   return false;
   }
/**
 * 发送post请求
 * @param path 请求路径
 * @param params 请求参数
 * @param string 编码
 * @return 请求是否成功
 * @throws Exception 
 */
//----------------------------------------添加了这个类---------------------------
private static boolean sendPOSTRequest(String path,
Map<String, String> params, String coding) throws 
Exception
{
//title=lidewei&timelength=90
StringBuilder data=new StringBuilder();
if(params!=null && !params.isEmpty()){
for(Map.Entry<String, String> entry:params.entrySet()){
data.append(entry.getKey()).append("=");
//url.append(entry.getValue());
data.append(URLEncoder.encode(entry.getValue(), coding));
//乱码的第一个因素,对传来的字符串进行编码
data.append("&");
}
data.deleteCharAt(data.length()-1);
}
byte[] entity=data.toString().getBytes();//得到实体数据
  HttpURLConnection conn= (HttpURLConnection) new URL(path).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("POST");
conn.setDoOutput(true);//允许
conn.setRequestProperty("Content-Type", "application/x-www-form-
urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(entity.length));
OutputStream outputStream=conn.getOutputStream();
outputStream.write(entity);//数据写到了缓存中
//只有在我们取得响应的http协议的某个部分的时候,请求才会真正的发送出去.
if (conn.getResponseCode()==200)
{
return true;
}
return false;
}
//----------------------------------------添加了这个类------------end----------
title=xiaofeng&timelength=80
/**
 * 发送GET请求
 * @param path 请求路径
 * @param params 请求参数
 * @return  请求是否成功
 * @throws Exception 
 */
//private static boolean sendGetRequest(String path,Map<String, String> 
params)throws Exception{
//没有修改前会出现乱码
private static boolean sendGetRequest(String path,Map<String, String> 
params,String coding)throws Exception{
StringBuilder url=new StringBuilder(path);
url.append("?");
for(Map.Entry<String, String> entry:params.entrySet()){
url.append(entry.getKey()).append("=");
//url.append(entry.getValue());
url.append(URLEncoder.encode(entry.getValue(), coding));
//乱码的第一个因素,对传来的字符串进行编码
//
url.append("&");
}
url.deleteCharAt(url.length()-1);
HttpURLConnection conn=(HttpURLConnection)new URL(url.toString
()).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200){
return true;
}
return false;
}
}
--------------------------------------
b.修改web项目WebGetSetTest中的类:
/WebGetSetTest/src/com/credream/filter/EncodingFilter.java
package com.credream.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class EncodingFilter implements Filter {
public void destroy() {
// 销毁的时候调用
}
 
public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException {
 //每一次请求到来的时候都会调用这个方法
HttpServletRequest req=(HttpServletRequest) request;
if("GET".equals(req.getMethod())){
EncodingHttpServletRequest wrapper=new 
EncodingHttpServletRequest(req);
chain.doFilter(wrapper, response);
}else {
//--------------------------------------添加了这个部分解决乱码问题----------
req.setCharacterEncoding("UTF-8");
//--------------------------------------添加了这个部分解决乱码问题--------end--
//解决乱码问题
chain.doFilter(request, response);
}
//--request请求对象--->Filter--->wrapper包装后的request对象--
>servlet-->这时候调用的request是包装后的request
}
 
public void init(FilterConfig fConfig) throws ServletException {
// 当web应用启动的时候就会调用这个方法
}
}
-------------------------------------------------------------------------
8.可以用httpClient这个开源项目,来跟web应用打交道的话,那么会方便很多
  但是理论上性能不如直接组拼http协议好,要访问cookie,session的时候,使用开源项目的
  httpClient的时候,会提高开发速度.
------------------------------------------------------------------
9.使用httpClient进行post请求发送的源码:
 a.需要修改android项目类中的代码:
/NewsGetSetManager/src/com/credream/service/NewsService.java
  package com.credream.service;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
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 android.media.MediaRecorder.OutputFormat;
import android.provider.ContactsContract.Contacts.Data;
public class NewsService
{
/**
 * 保存数据
 * @param title 标题
 * @param length 时长
 * @return
 */
public static boolean save(String title, String length)
{
String 
   Map<String, String>  params=new HashMap<String, String>();
   params.put("title", title);
   params.put("timelength", length);
   try{
//return sendGetRequest(path,params);
//return sendGetRequest(path,params,"UTF-8");
   //return sendPOSTRequest(path,params,"UTF-8");
   return sendHttpClientRequest(path,params,"UTF-8");
   }catch(Exception e){
   e.printStackTrace();
   }
   return false;
   }
/**通过httpClient的时候,发送post请求
 *使用httpClient的时候,不需要导入jar文件,因为android,已经集成了这个功能
 * @param path
 * @param params
 * @param string
 * @return
 * @throws IOException 
 */
private static boolean sendHttpClientRequest(String path,
Map<String, String> params, String coding) throws 
IOException
{
List<NameValuePair> pairs=new ArrayList<NameValuePair>();//存放请
求参数
if(params!=null && !params.isEmpty()){
for(Map.Entry<String, String> entry:params.entrySet()){
pairs.add(new BasicNameValuePair(entry.getKey(), 
entry.getValue()));
}
}
//采用
//编码
UrlEncodedFormEntity entity=new UrlEncodedFormEntity
(pairs,coding);
HttpPost httpPost=new HttpPost(path);
httpPost.setEntity(entity);
DefaultHttpClient client=new DefaultHttpClient();
//可以看做一个浏览器
HttpResponse response=client.execute(httpPost);
if (response.getStatusLine().getStatusCode()==200)
{
return true;
}
return false;
}
/**
 * 发送post请求
 * @param path 请求路径
 * @param params 请求参数
 * @param string 编码
 * @return 请求是否成功
 * @throws Exception 
 */
private static boolean sendPOSTRequest(String path,
Map<String, String> params, String coding) throws 
Exception
{
//title=lidewei&timelength=90
StringBuilder data=new StringBuilder();
if(params!=null && !params.isEmpty()){
for(Map.Entry<String, String> entry:params.entrySet()){
data.append(entry.getKey()).append("=");
//url.append(entry.getValue());
data.append(URLEncoder.encode(entry.getValue(), coding));
//乱码的第一个因素,对传来的字符串进行编码
data.append("&");
}
data.deleteCharAt(data.length()-1);
}
byte[] entity=data.toString().getBytes();//得到实体数据
  HttpURLConnection conn= (HttpURLConnection) new URL(path).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("POST");
conn.setDoOutput(true);//允许
conn.setRequestProperty("Content-Type", "application/x-www-form-
urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(entity.length));
OutputStream outputStream=conn.getOutputStream();
outputStream.write(entity);//数据写到了缓存中
//只有在我们取得响应的http协议的某个部分的时候,请求才会真正的发送出去.
if (conn.getResponseCode()==200)
{
return true;
}
return false;
}
title=xiaofeng&timelength=80
/**
 * 发送GET请求
 * @param path 请求路径
 * @param params 请求参数
 * @return  请求是否成功
 * @throws Exception 
 */
//private static boolean sendGetRequest(String path,Map<String, String> 
params)throws Exception{
//没有修改前会出现乱码
private static boolean sendGetRequest(String path,Map<String, String> 
params,String coding)throws Exception{
StringBuilder url=new StringBuilder(path);
url.append("?");
for(Map.Entry<String, String> entry:params.entrySet()){
url.append(entry.getKey()).append("=");
//url.append(entry.getValue());
url.append(URLEncoder.encode(entry.getValue(), coding));
//乱码的第一个因素,对传来的字符串进行编码
//
url.append("&");
}
url.deleteCharAt(url.length()-1);
HttpURLConnection conn=(HttpURLConnection)new URL(url.toString
()).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200){
return true;
}
return false;
}
}

抱歉!评论已关闭.