② 对这4段循环处理,取每段的8个字符, 将他看成16进制字符串与0x3fffffff(30位1)的位与操作,超过30位的忽略处理;
③ 将每段得到的这30位又分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串;
④ 这样一个md5字符串可以获得4个6位串,取里面的任意一个就可作为这个长url的短url地址。
很简单的理论,我们并不一定说得到的URL是唯一的,但是我们能够取出4组URL,这样几乎不会出现太大的重复。
长连接听起来神秘而已。
只要不关都是长连接啊。
transferSocket=new Socket(transferServerIp, Integer.valueOf(transferServerport))transferSocket.close()
每次运行的时候生成一个socket,用完了就close就是短连接啊
package com.zhidao.wwwimport java.io.BufferedReader
import java.io.InputStream
import java.io.InputStreamReader
import java.net.HttpURLConnection
import java.net.URL
public class TestShort {
public static void main(String[] args) {
// TODO Auto-generated method stub
String httpUrl = "http://apis.baidu.com/3023/shorturl/shorten"
String httpArg = "url_long=http%3A%2F%2Fapistore.baidu.com%2Fastore%2Fshopready%2F1973.html"
String jsonResult = request(httpUrl, httpArg)
System.out.println(jsonResult)
}
/**
* @param urlAll
*:请求接口
* @param httpArg
*:参数
* @return 返回结果
*/
public static String request(String httpUrl, String httpArg) {
BufferedReader reader = null
String result = null
StringBuffer sbf = new StringBuffer()
httpUrl = httpUrl + "?" + httpArg
try {
URL url = new URL(httpUrl)
HttpURLConnection connection = (HttpURLConnection) url
.openConnection()
connection.setRequestMethod("GET")
// 填入apikey到HTTP header
connection.setRequestProperty("apikey", "自己的apikey")
connection.connect()
InputStream is = connection.getInputStream()
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"))
String strRead = null
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead)
sbf.append("\r\n")
}
reader.close()
result = sbf.toString()
} catch (Exception e) {
e.printStackTrace()
}
return result
}
}
这个可以用 不过要自己申请下api key 得到的字符串也要自己解析