HTTPClient 使用

所需jarhtml

    <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>fluent-hc</artifactId>
            <version>4.2</version>
        </dependency>

java調用方法java

package com.zc.finance.menu;

import java.io.Console;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.http.HttpEntity;
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.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.alibaba.fastjson.JSON;
import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
import com.zc.common.BaseController;
import com.zc.finance.resoruce.domain.Role;

@Controller
public class MenuController extends BaseController {

    /**
     * 導航欄
     */
    public String url12="";
    
    
    @RequestMapping(value = "/role/addRole")
    public void getHttpClientUpdateRole(String url, Map<String, String> params,
            HttpServletResponse response,HttpServletRequest request,   Role model) {
        
        String role = JSON.toJSONString(model);  
        request.getParameter("roleName");
        String url1 = url12
        params.put("role", role);
        String str = post(url1, params);
        response.setContentType("text/html;charset=utf-8");
        try {
            response.getWriter().write(str);
            response.getWriter().flush();
            response.getWriter().close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //return str;
    }
    
    public String post(String url, Map<String, String> params) {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        String body = null;
        // log.info("create httppost:" + url);
        HttpPost post = postForm(url, params);
        body = invoke(httpclient, post);
        httpclient.getConnectionManager().shutdown();
        return body;
    }

    public String get(String url) {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        String body = null;
        
        // log.info("create httppost:" + url);
        HttpGet get = new HttpGet(url);
        body = invoke(httpclient, get);
        httpclient.getConnectionManager().shutdown();

        return body;
    }

    private String invoke(DefaultHttpClient httpclient, HttpUriRequest httpost) {
        HttpResponse response = sendRequest(httpclient, httpost);
        String body = paseResponse(response);
        return body;
    }

    private String paseResponse(HttpResponse response) {
        String body = null;
        // log.info("get response from http server..");
        HttpEntity entity = response.getEntity();

        // log.info("response status: " + response.getStatusLine());
        String charset = EntityUtils.getContentCharSet(entity);
        // log.info(charset);
        try {
            body = EntityUtils.toString(entity);
            // log.info(body);
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        /**
         * 判斷返回數據類型是不是json格式的, 是說明請求成功,不是說明用戶未登錄或登錄超時
         */
        try {
            JSON.parse(body);
        } catch (Exception e) {
            body = "用戶未登錄或登錄超時!";
            e.printStackTrace();
        }

        return body;
    }

    private HttpResponse sendRequest(DefaultHttpClient httpclient,
            HttpUriRequest httpost) {
        // log.info("execute post...");
        HttpResponse response = null;
        
        try {
            response = httpclient.execute(httpost);
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return response;
    }

    private HttpPost postForm(String url, Map<String, String> params) {

        HttpPost httpost = new HttpPost(url);
        
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
        Set<String> keySet = params.keySet();
        for (String key : keySet) {
            nvps.add(new BasicNameValuePair(key,  params.get(key)));
        }
        try {
            // log.info("set utf-8 form entity to httppost");
            httpost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        return httpost;
    }

    

}

web

相關文章
相關標籤/搜索