android讀取伺服器
1. android怎麼獲取伺服器數據
一:基於Http協議獲取數據方法。二:基於SAOP協議獲取數據方法,
這篇文章主要是將關於使用Http協議獲取伺服器端數據,這里我們採取的伺服器端技術為java,框架為Struts2,或者可以有Servlet,又或者可直接從JSP頁面中獲取數據。
那麼,接下來我們便開始這一路程:
首先:編寫伺服器端方法,我這里採用的MVC框架是Struts2,目的很單純,就是為了以後做個完整的商業項目,技術配備為:android+SSH。當然,篇幅有限,我這里就直接用Strtus2而已。
伺服器端:新建WebProject ,選擇Java ee 5.0.
為了給項目添加Struts2的支持,我們必須導入Struts2的一些類庫,如下即可(有些jar包是不必的,但是我們後來擴展可能是要使用到的,就先弄進去):
1: xwork-core-2.2.1.1.jar
2: struts2-core-2.2.1.1.jar
3: commons-logging-1.0.4.jar
4: freemarker-2.3.16.jar
5: ognl-3.0.jar
6: javassist-3.7.ga.jar
7:commons-ileupload.jar
8:commons-io.jar
9:json-lib-2.1-jdk15.jar 處理JSON格式數據要使用到
10:struts2-json-plugin-2.2.1.1.jar 基於struts2的json插件
以上的jar包,需要放在WebRoot/WEB-INF/lib目錄下
然後在web.xml文件中敲下:
View Code
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 定義Struts2的核心控制器:FilterDispatcher -->
<filter>
<!-- 定義核心Filter的名稱 -->
<filter-name>struts2</filter-name>
<!-- 定義Filter的實現類 -->
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
然後編寫struts.xml文件,並放在WebRoot/WEB-INF/lib目錄下:如下代碼:
View Code
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- setting encoding,DynamicMethod,language
<constant name="struts.custom.i18n.resources" value="messageResource"></constant>
-->
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<!-- add package here extends="struts-default"-->
<package name="dongzi" extends="json-default"> <!--需要將struts-default改為json-default-->
<!-- setting action -->
<action name="login" class="com.dongzi.action.loginAction" method="login">
<result type="json"></result> <!--返回值類型設置為json,不設置返回頁面-->
</action>
</package>
</struts>
配置好後,我們再根據<action>標簽內容來編寫action。方法為method對應的login,類名為loginAction,
注意:包繼承為:json-default ,輸出結果類型為json
如下:
View Code
public class loginAction extends ActionSupport implements
ServletRequestAware,ServletResponseAware {
/**
*
*/
private static final long serialVersionUID = 1L;
HttpServletRequest request;
HttpServletResponse response;
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
public void setServletResponse(HttpServletResponse response) {
this.response=response;
}
public void login(){
try {
//HttpServletRequest request =ServletActionContext.getRequest();
// HttpServletResponse response=ServletActionContext.getResponse();
this.response.setContentType("text/html;charset=utf-8");
this.response.setCharacterEncoding("UTF-8");
if(this.request.getParameter("username").equals("123456")){
this.response.getWriter().write("真的很奇怪,日本人!");
}else if(this.request.getParameter("username").equals("zhd")){
this.response.getWriter().write("沒有錯,我就是東子哥!");
}else{
this.response.getWriter().write("我就是東子哥!");
}
//將要返回的實體對象進行json處理
// JSONObject json=JSONObject.fromObject(this.getUsername());
//輸出格式如:{"id":1, "username":"zhangsan", "pwd":"123"}
// System.out.println(json);
// this.response.getWriter().write(json.toString());
/**
JSONObject json=new JSONObject();
json.put("login", "login");
response.setContentType("text/html;charset=utf-8");
System.out.println(json);
byte[] jsonBytes = json.toString().getBytes("utf-8");
response.setContentLength(jsonBytes.length);
response.getOutputStream().write(jsonBytes);
**/
/**
JSONObject json=new JSONObject();
json.put("login", "login");
byte[] jsonBytes = json.toString().getBytes("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setContentLength(jsonBytes.length);
response.getOutputStream().write(jsonBytes);
response.getOutputStream().flush();
response.getOutputStream().close();
**/
} catch (Exception e) {
e.printStackTrace();
}
// return null;
}
}
2. 怎麼讓: Android上讀取伺服器端的圖片(伺服器從資料庫中取圖片地址給Android)
第一、圖片地址,就是你本地圖片地址,伺服器要取出數據,總得有個路徑吧。圖片放到伺服器方便訪問就行
第二、你在pc上用瀏覽器咋訪問就咋訪問呀,就是網路地址
第三、listview的顯示網上很多的,我就沒有必要跟你多說了
3. android中怎麼獲取到伺服器的返回的數據解析並顯示到界面
一般都是--- 首先,android客戶端調用伺服器端的介面,請求數據,伺服器端響應、返回xml、或者json已經包 裝好的對象(伺服器端需要做大量的工作,資料庫的連接、數據操作、包裝數據等等) 然後,客戶端拿到這個對象,android有專門的類和方法來解析這些數據對象 最後,按自己想要的格式顯示在界面上就完成了
4. Android客戶端怎麼與伺服器資料庫連接
不能與資料庫連接的
Android客戶端不能直接與伺服器資料庫連接。資料庫是需要非常大的內存,安裝之後有好幾G,連接資料庫要有一個像sqlServer里的webservice,這樣的一個橋梁來間接訪問。就是在伺服器運行一個服務端程序,該服務端程序通過接收來自android客戶端的指令,對資料庫進行操作。
客戶端的http請求可以通過 HttpClient類實現,在anddroid 4.0之後,客戶端的網路請求已經不被允許在主線程中運行,所以還需注意另開啟一個子線程進行網路請求。
(4)android讀取伺服器擴展閱讀:
Android安全許可權機制:
Android默認設置下,所有應用都沒有許可權對其他應用、系統或用戶進行較大影響的操作。這其中包括讀寫用戶隱私數據(聯系人或電子郵件),讀寫其他應用文件,訪問網路或阻止設備待機等。安裝應用時,在檢查程序簽名提及的許可權,且經過用戶確認後,軟體包安裝器會給予應用許可權。
下載一款Android應用通常會要求如下的許可權:撥打電話、發送簡訊或彩信、修改/刪除SD卡上的內容、讀取聯系人的信息、讀取日程信的息,寫入日程數據、讀取電話狀態或識別碼、精確的(基於GPS)地理位置、模糊的(基於網路獲取)地理位置、創建藍牙連接、
還有對互聯網的完全訪問、查看網路狀態,查看WiFi狀態、避免手機待機、修改系統全局設置、讀取同步設定、開機自啟動、重啟其他應用、終止運行中的應用、設定偏好應用、震動控制、拍攝圖片等。
5. Android手機app 鏈接伺服器的mysql 讀取資料庫
手機是不能直接去連接你伺服器的mysql資料庫
請在你的服務端寫代碼去連接mysql數據吧
Mysql連接方法
1. 載入資料庫驅動:Class.forName("org.gjt.mm.mysql.Driver"); //載入資料庫驅動
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String passowrd = "123456";
2. 獲取資料庫連接Connection con數=DriverManager.getConnection(url,user,password)
3. 獲取SQL執行器 PreparedStatement prepare = con.prepareStatement("SQL語句")
4. 執行SQL語句,得到結果集 ResultSet result = prepare.executeQuery();
while(result.next()){
//讀取結果
}
最後不要忘記導入jdbc驅動包
純工手打字,請採納哈
6. android開發中,如何連接伺服器,從伺服器讀取到數據
伺服器端生成JSON:
使用HttpURLConnection連接,通過JSON格式傳遞對象數據
URLurl=newURL(urlpath);
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
InputStreaminStream=conn.getInputStream();
=newByteArrayOutputStream();
byte[]data=newbyte[1024];
intlen=0;
while((len=inStream.read(data))!=-1){
outStream.write(data,0,len);
System.out.println(len);
}
inStream.close();
byte[]rlt=outStream.toByteArray();
returnnewString(rlt);
7. 【求助】android系統如何簡單地訪問伺服器
其實就是伺服器和客戶端通信的問題,如果你用http訪問伺服器,那麼伺服器端肯定要有serlvet來響應你的請求才行,同樣的你用socket來請求連接伺服器,那麼伺服器也要有程序再監聽這個連接請求,然後處理才行,你的問題最簡單就是socket,不過伺服器端也要有監聽請求代碼,謝謝採納。