zoukankan      html  css  js  c++  java
  • 调用第三方接口生成短链接(四)

     

     API文档: http://980.so/。可以参照调用第三方接口生成短链接(二)

    用到的Java jar包:

    httpclient-4.5.jar,httpclient-cache-4.5.jar,httpclient-win-4.5.jar,httpcore-4.4.1.jar,httpmime-4.5.jar,fastjson-1.2.2.jar。

    下载地址:http://download.csdn.net/detail/litter_fisher/9923346。

    具体代码如下,点击可查看:

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    
    public class Test980 {
    	
    	static String ACTIONURL = "http://980.so/api.php";
    	public static void main(String[] args) {		
    		String longUrl = "https://www.baidu.com";
    		Test980 ts = new Test980();
    		System.out.println(ts.getUrlTxt(longUrl));
    		System.out.println("--------------");
    		System.out.println(ts.getUrlJson(longUrl));		
    	}
    	
    	public String getUrlTxt(String url) {
    		String ret = "";
    		try {
    			String longUrlSuo =  java.net.URLEncoder.encode(url,"utf-8");
    			String result = HttpRequest.sendGet(ACTIONURL, "url="+longUrlSuo);
    			if(result==null || "".equals(result)){
    				return "";
    			}		
    			System.out.println("--result: --" + result);
    			ret = result;
    		} catch (Exception e) {
    			e.printStackTrace();
    		} 
    		return ret;	
    	}
    	
    	public String getUrlJson(String url) {
    		String ret = "";
    		try {
    			String longUrlSuo =  java.net.URLEncoder.encode(url,"utf-8");
    			String result = HttpRequest.sendGet(ACTIONURL, "url="+longUrlSuo+"&format=json");
    			if(result==null || "".equals(result)){
    				return "";
    			}		
    			JSONObject json = JSON.parseObject(result);	
    			System.out.println("--result: --" + json.toJSONString());
    			ret = json.get("url").toString();
    		} catch (Exception e) {
    			e.printStackTrace();
    		} 
    		return ret;	
    	}
    	
    
    
    	
    }
    

    同样的接口文档还要http://ni2.org/api,代码如下:

    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    public class TestNi2 {
    	static String ACTIONURL = "http://ni2.org/api/create.json";
    	public static void main(String[] args) {
    		String  url = "https://www.baidu.com";
    		TestNi2 tn = new TestNi2();
    		System.out.println(tn.getUrlJson(url));
    	}
    
    	public String getUrlJson(String url) {
    		String ret = "";
    		try {
    			String longUrlSuo =  java.net.URLEncoder.encode(url,"utf-8");
    			String result = HttpRequest.sendGet(ACTIONURL, "url="+longUrlSuo+"&format=json");
    			if(result==null || "".equals(result)){
    				return "";
    			}		
    			JSONObject json = JSON.parseObject(result);	
    			System.out.println("--result: --" + json.toJSONString());
    			ret = json.get("url").toString();
    		} catch (Exception e) {
    			e.printStackTrace();
    		} 
    		return ret;	
    	}
    }
    

      由于http的请求方式经常用到,此处已将其抽离成一个公共类,代码如下: 

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class HttpRequest {
        /**
         * 向指定URL发送GET方法的请求
         * @param url 发送请求的URL
         * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
         * @return URL 所代表远程资源的响应结果
         */
        public static String sendGet(String url, String param) {
            String result = "";
            BufferedReader in = null;
            try {
                String urlNameString = url + "?" + param;
                URL realUrl = new URL(urlNameString);
                // 打开和URL之间的连接
                URLConnection connection = realUrl.openConnection();
                // 设置通用的请求属性
                connection.setRequestProperty("accept", "*/*");
                connection.setRequestProperty("connection", "Keep-Alive");
                connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 建立实际的连接
                connection.connect();
                // 定义 BufferedReader输入流来读取URL的响应
                in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送GET请求出现异常!" + e);
                e.printStackTrace();
            }
            // 使用finally块来关闭输入流
            finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
            return result;
        }
    
        /**
         * 向指定 URL 发送POST方法的请求
         * @param url 发送请求的 URL
         * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
         * @return 所代表远程资源的响应结果
         */
        public static String sendPost(String url, String param) {
            PrintWriter out = null;
            BufferedReader in = null;
            String result = "";
            try {
                URL realUrl = new URL(url);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 设置通用的请求属性
                conn.setRequestProperty("accept", "*/*");
                conn.setRequestProperty("connection", "Keep-Alive");
                conn.setRequestProperty("user-agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 发送POST请求必须设置如下两行
                conn.setDoOutput(true);
                conn.setDoInput(true);
                // 获取URLConnection对象对应的输出流
                out = new PrintWriter(conn.getOutputStream());
                // 发送请求参数
                out.print(param);
                // flush输出流的缓冲
                out.flush();
                // 定义BufferedReader输入流来读取URL的响应
                in = new BufferedReader(
                        new InputStreamReader(conn.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送 POST 请求出现异常!"+e);
                e.printStackTrace();
            }
            //使用finally块来关闭输出流、输入流
            finally{
                try{
                    if(out!=null){
                        out.close();
                    }
                    if(in!=null){
                        in.close();
                    }
                }
                catch(IOException ex){
                    ex.printStackTrace();
                }
            }
            return result;
        }    
    }
    

      

  • 相关阅读:
    C++中整型变量的存储大小和范围
    A1038 Recover the Smallest Number (30 分)
    A1067 Sort with Swap(0, i) (25 分)
    A1037 Magic Coupon (25 分)
    A1033 To Fill or Not to Fill (25 分)
    A1070 Mooncake (25 分)
    js 获取控件
    C#代码对SQL数据库添加表或者视图
    JS 动态操作表格
    jQuery取得下拉框选择的文本与值
  • 原文地址:https://www.cnblogs.com/loytime/p/7297811.html
Copyright © 2011-2022 走看看