天天看點

Java通過HTTP請求JSON

<code>package</code> <code>com.mzsx.http;</code>

<code>import</code> <code>java.io.BufferedReader;</code>

<code>import</code> <code>java.io.DataOutputStream;</code>

<code>import</code> <code>java.io.IOException;</code>

<code>import</code> <code>java.io.InputStreamReader;</code>

<code>import</code> <code>java.io.UnsupportedEncodingException;</code>

<code>import</code> <code>java.net.HttpURLConnection;</code>

<code>import</code> <code>java.net.URL;</code>

<code>import</code> <code>java.net.URLEncoder;</code>

<code>public</code> <code>class</code> <code>HttpJsonUilt {</code>

<code>    </code><code>/**</code>

<code>     </code><code>* Get請求</code>

<code>     </code><code>*</code>

<code>     </code><code>* */</code>

<code>    </code><code>public</code> <code>static</code> <code>String readContentFromGet(String GET_URL) </code><code>throws</code> <code>IOException{</code>

<code>        </code><code>URL getUrl = </code><code>new</code> <code>URL(GET_URL);</code>

<code>        </code><code>HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();</code>

<code>        </code><code>connection.connect();</code>

<code>        </code><code>BufferedReader reader = </code><code>new</code> <code>BufferedReader(</code><code>new</code> <code>InputStreamReader(connection.getInputStream(),</code><code>"utf-8"</code><code>));</code><code>//設定編碼,否則中文亂碼</code>

<code>        </code><code>StringBuffer lines=</code><code>new</code> <code>StringBuffer();</code>

<code>        </code><code>String line=</code><code>null</code><code>;</code>

<code>        </code><code>while</code> <code>((line = reader.readLine()) != </code><code>null</code><code>){</code>

<code>            </code><code>lines.append(line);</code>

<code>        </code><code>}</code>

<code>        </code><code>reader.close();</code>

<code>        </code><code>// 斷開連接配接</code>

<code>        </code><code>connection.disconnect();</code>

<code>        </code><code>return</code> <code>lines.toString();</code>

<code>    </code><code>}</code>

<code>     </code><code>* post請求</code>

<code>    </code><code>public</code> <code>static</code> <code>String readContentFromPost(String POST_URL, String params) </code><code>throws</code> <code>IOException{</code>

<code>        </code><code>URL postUrl = </code><code>new</code> <code>URL(URLEncoder.encode(POST_URL,</code><code>"utf-8"</code><code>));</code>

<code>        </code><code>// 打開連接配接</code>

<code>        </code><code>HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection();</code>

<code>        </code><code>connection.setDoOutput(</code><code>true</code><code>);</code>

<code>        </code><code>connection.setDoInput(</code><code>true</code><code>);</code>

<code>        </code><code>connection.setRequestMethod(</code><code>"POST"</code><code>);</code>

<code>        </code><code>// Post 請求不能使用緩存</code>

<code>        </code><code>connection.setUseCaches(</code><code>false</code><code>);</code>

<code>        </code><code>connection.setInstanceFollowRedirects(</code><code>true</code><code>);</code>

<code>        </code><code>connection.setRequestProperty(</code><code>"Content-Type"</code><code>,</code><code>"application/x-www-form-urlencoded"</code><code>);</code>

<code>        </code><code>// 連接配接,從postUrl.openConnection()至此的配置必須要在connect之前完成,</code>

<code>        </code><code>// 要注意的是connection.getOutputStream會隐含的進行connect。</code>

<code>        </code><code>DataOutputStream out = </code><code>new</code> <code>DataOutputStream(connection</code>

<code>                </code><code>.getOutputStream());</code>

<code>       </code><code>// String content = "";//"key=j0r53nmbbd78x7m1pqml06u2&amp;type=1&amp;[email protected]" + "&amp;activatecode=" + URLEncoder.encode("中國聚龍", "utf-8");</code>

<code>        </code><code>// DataOutputStream.writeBytes将字元串中的16位的unicode字元以8位的字元形式寫道流裡面</code>

<code>        </code><code>out.writeBytes(params);</code>

<code>        </code><code>out.flush();</code>

<code>        </code><code>out.close(); </code><code>// flush and close</code>

<code>    </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) </code><code>throws</code> <code>UnsupportedEncodingException {</code>

<code>        </code><code>//如果參數中有中文可以使用URLEncoder.encode(params,"utf-8")轉義</code>

<code>        </code><code>//http://api.map.baidu.com/place/v2/search?</code>

<code>          </code> 

<code>        </code><code>String GET_URL = </code><code>"http://api.map.baidu.com/place/v2/search?ak=F454f8a5efe5e577997931cc01de3974&amp;output=json&amp;query="</code><code>+URLEncoder.encode(</code><code>"銀行"</code><code>,</code><code>"utf-8"</code><code>)+</code><code>"&amp;page_size=10&amp;page_num=0&amp;scope=1&amp;region="</code><code>+URLEncoder.encode(</code><code>"北京"</code><code>,</code><code>"utf-8"</code><code>);</code>

<code>        </code><code>System.out.println(GET_URL);</code>

<code>        </code><code>try</code> <code>{</code>

<code>            </code><code>System.out.println(readContentFromGet(GET_URL));</code>

<code>        </code><code>} </code><code>catch</code> <code>(IOException e) {</code>

<code>            </code><code>// TODO Auto-generated catch block</code>

<code>            </code><code>e.printStackTrace();</code>

<code>      </code> 

<code>}</code>

版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任

本文轉自 夢朝思夕 51CTO部落格,原文連結:http://blog.51cto.com/qiangmzsx/1394730