長短接続HTTP接続切替インタフェース(API)

長い接続とは何ですか?

HTTP1.1プロトコルは、長い接続を(も持続的な接続と訳さHTTPの永続的な接続、)を維持するために、デフォルトのWebアドレスを指定し、そのWebサーバへのリンクを取得するだけで元の長さに接続することができます。

短い接続とは何ですか?

ショート接続(ショートURL)、名前が示唆する比較的短いリンクの形である、私の友人の多くは、例えば、ときに我々テンセント、新浪微博マイクロブログ、特にマイクロブログアプリケーションでは、もはや非常に一般的に奇妙ではありません時々、しかしのでマイクロブログが自動的に変換器への短い接続にあなたの長い髪を置くので、唯一の140単語をマイクロブログの制限の髪の長いURL接続が接続されています。紛れもなく、短いURLを使用するマイクロブログの言葉やSMSのリマインダの数を制限するための場所では、それが本当に良いプログラムです。

長い接続と短い接続変換インタフェース

シーナ短いリンクインターフェイス:http://lnurl.cn/sina/short-api?link=http://www.baidu.com

マイクロチャネルのショートリンク・インタフェース:http://lnurl.cn/weixin/short?link=http://www.baidu.com


インタフェース手順:

1、オンラインでの使用

APIのアドレス「http://www.baidu.com」 その後、彼らの長い接続への部品、および完全なアドレスは、ブラウザを開いて、生成を貼り付けることができますコピーして行きます。(一言で言えば、交換リンクバックURLです)

図2に示すように、要求インタフェース

あなたはあまりにも面倒な変換の1より大きいに、バッチ生産が必要な場合は、以下の例を要求し、APIインタフェースプログラムへの要求のために生成することができます。

 

PHP要求の例:

$ URL = 'http://www.baidu.com'; 
$ api_url =「http://lnurl.cn/sina/short-api?url_long=http://www.baidu.com。
$ SHORT_URL =のfile_get_contents($ api_url)。
エコー$ SHORT_URL。

Javaのリクエスト例:

メインボイドパブリック静的(文字列のパスは、[]){例外をスロー
URL U =新しいURL( "http://lnurl.cn/sina/short-api?url_long=http://www.baidu.com")。
= u.openStreamに入力ストリーム(); 
=新しいByteArrayOutputStreamアウトByteArrayOutputStream(); 
{試す
バイトBUF [] =新しいバイト[1024]; 
INT = 0を読んで。
((読む= .readで(BUF))> 0){一方
out.write(BUF、0、読み出し)。
} 
}最後に{ 
IF(!で= NULL){ 
)(.closeで; 
} 
} 
バイトB [] = out.toByteArray()。
System.out.println(新しいString(B、 "UTF-8")); 
}


Pythonサンプルリクエスト:

インポートurllibは、urllib2の、SYS 
ホスト= 'http://lnurl.cn' 
パス= '/シナ/短API' 
メソッド= 'GET' 
querys = 'url_long =のhttp%3A%2F%2Fwww.baidu.com' 
のbodys = {} 
URL =ホスト+パス+ '?' + querysが
要求=はurllib2.Request(URL)
応答= urllib2.urlopen(リクエスト)
含有量= response.read()
IF(コンテンツ):
プリント(コンテンツ)

注意事項:

1は、APIインタフェースを呼び出すときに、単に「http://www.baidu.comは」長いリンクを短くする必要性を置き換えます。

2パラメータとのインタフェースがサポートリンクが、そうでなければパラメータが失われる可能性があり、&シンボルは、リンクに表示された場合に、代わりに26%を使用する(またはURLエンコード使用)ことに留意すべきです。

3は、リンクを交換、HTTP(S)に基づいている必要があります://冒頭で、これはジャンプすることはできません元のサイトを生成したり、アクセスに短いURL短いURLを生成するために失敗する可能性があります。

 

よくある質問:

1、長いリンク変換パラメータの後に、なぜ端が失われていますか?

:長いリンクに特殊文字が含まれているため、あなたは使用インタフェース生成する前にエンコードするURLする必要があります。

2、インターフェースは結果を返しませんが、状況は何ですか?

:時々インタフェースは、データが返されないタイムアウトエラーを生成する、遅延される戻り、それは、結果を返さない。元のリンクが閉じられたため、または。

短期接続を生成するための有効な3は、どのくらいですか?制限なしの訪問はありませんか?

:結果の短い接続が(t.cn&url.cn)永久的である、無制限のクリックはありません、あなたはその使用を安心することができます。

 

アルゴリズム論

アルゴリズム

1)URL文字列MD5の長さは、4つのセグメントに分割され、32ビットの署名、それぞれ1バイト(すなわち8ビット)を生成します。

2)これら四つのループ処理を、彼は16進数の文字列と0x3fffffff(30ビット1)動作、即ち、30の以上の無視処理として、4バイト(32ビット)を取ります。

3)6つのセグメントに分割された30を、順次6を得るために実行される特定のアルファベットの文字列を取得する指標として、各5桁の数字。

4)全配列は、MD5 4つの6ビット列を取得し、短い長さのURL URLアドレスの内部として任意に取ることができます。

アルゴリズム2

数字や文字が62個の組み合わせがaaaaa9あるなど、第一の組成物63はaaaaba、再利用シャッフルアルゴリズムは、マッピングのいくつかの組み合わせは、我々は固有の文字列を生成することができません、元の文字列のストレージは、対応する、破砕しました文字列の組み合わせ位置が無秩序の組み合わせになります。

返されたIDを取ってデータベースに格納されたURLの長さは、例えば、ID 1を返し、対応する文字列を検索し、対応する文字列がBBB上記の組み合わせである、共感IDは、文字列の組み合わせBBA 2であり、そしてようにそれは組み合わせの62種類に達するまで繰り返した後、重複して表示される場合がありますので、文字の任意の組み合わせは、単語の文字列は500百万円のあなたのデータストックに6を取る、62文字以上の場合は、後で表示されることがあります。

おすすめ

転載: blog.51cto.com/14637231/2459551