都說利用java實現跨域訪問很簡單,原來是利用java的net包可以實現串連url,post、get傳值什麼的。
當然,你也可以用httpClient這種第三方的方法。
今天遇到的問題是,在post時出現異常:
java.io.IOException: Server returned HTTP response code: 500 for URL: http://192.98.8.50/。。。
在網上查了一下,也是很多情況,
我遇到的情況是:
我在沒有post參數的情況下也開啟了OutputStreamWriter造成的。
修改後的完整程式如下:
private StringBuffer urlConnectionPost(String tourl,StringBuffer data) {<br />StringBuffer sb = null;<br /> BufferedReader reader = null;<br /> OutputStreamWriter wr = null;<br /> URL url;<br /> try {<br /> url = new URL(tourl);<br /> URLConnection conn = url.openConnection();<br /> conn.setDoOutput(true);<br /> conn.setConnectTimeout(1000 * 5);<br /> //當存在post的值時,才開啟OutputStreamWriter<br /> if(data!=null && data.toString().trim().length()>0){<br /> wr = new OutputStreamWriter(conn.getOutputStream(),"UTF-8");<br /> wr.write(data.toString());<br /> wr.flush();<br /> }</p><p> // Get the response<br /> reader = new BufferedReader(new InputStreamReader(conn<br /> .getInputStream(),"UTF-8"));<br /> sb = new StringBuffer();<br /> String line = null;<br /> while ((line = reader.readLine()) != null) {<br /> sb.append(line + "/n");<br /> }<br /> } catch (IOException e) {<br /> // TODO Auto-generated catch block<br /> e.printStackTrace();<br /> }finally{<br /> try {<br /> if(wr!=null){<br /> wr.close();<br /> }<br /> if(reader!=null){<br /> reader.close();<br /> }<br />} catch (IOException e) {<br />// TODO Auto-generated catch block<br />e.printStackTrace();<br />}<br /> }<br /> return sb;<br />}