Android+Struts2實現簡單的前後台互動--Android網路編程

來源:互聯網
上載者:User

標籤:ica   java   服務   img   style   啟用   appcompat   oncreate   簡單的   

1、下面測試,基本過程就是:點擊按鈕向伺服器端發送請求,後台收到請求後給出返回的資料,前台只需要顯示服務端資料就可以了。例子很簡單能但引發很多思考,博主學了雜七雜八的,這又在來想雜學Android了?……其實是想多瞭解一下其他東西,畢竟博主還在上大學呀!多學點沒什麼不好……

2、用戶端(Android)關鍵代碼MainActivity.java:
 1 package thonlon.example.cn.sendgetdemo; 2  3 import android.inputmethodservice.KeyboardView; 4 import android.support.v7.app.AppCompatActivity; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.widget.Button; 8 import android.widget.ScrollView; 9 import android.widget.TextView;10 11 import java.io.IOException;12 13 import okhttp3.Call;14 import okhttp3.Callback;15 import okhttp3.OkHttpClient;16 import okhttp3.Request;17 import okhttp3.Response;18 19 public class MainActivity extends AppCompatActivity {20 21     private TextView tv;22     private String mBaseUrl = "http://192.168.43.218:8080/OkHttpGetServer/";23     @Override24     protected void onCreate(Bundle savedInstanceState) {25         super.onCreate(savedInstanceState);26         setContentView(R.layout.activity_main);27     }28 29     public void doGet(View view) {30         //拿到okHttpClient對象31         OkHttpClient okHttpClient = new OkHttpClient();32         //構造Request33         Request request = new Request.Builder().get()34                 .url(mBaseUrl+"login?username=Thanlon&password=123").build();35 //        將Request封裝成Call36 //        執行Call37         okHttpClient.newCall(request).enqueue(new Callback() {38             @Override39             public void onFailure(Call call, IOException e) {40                 e.printStackTrace();41             }42 43             @Override44             public void onResponse(Call call, Response response) throws IOException {45                 String res = response.body().string();46                 showResultInfo(res);47             }48         });49     }50 51     private void showResultInfo(final String resultInfo) {52         tv = (TextView) findViewById(R.id.tv);53         runOnUiThread(new Runnable() {54             @Override55             public void run() {56                 tv.setText(resultInfo);57             }58         });59     }60 }

 activity_main.xml:(布局也發了,做個參考)

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="thonlon.example.cn.sendgetdemo.MainActivity">    <Button        android:id="@+id/btn_send"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:onClick="doGet"        android:text="向伺服器端發送請求(這裡以Get請求作為樣本)"        app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent"        app:layout_constraintTop_toTopOf="parent"        app:layout_constraintVertical_bias="0.0" />    <TextView        android:id="@+id/tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent"        app:layout_constraintTop_toTopOf="parent"        app:layout_constraintHorizontal_bias="0.0"        app:layout_constraintVertical_bias="0.097" /></android.support.constraint.ConstraintLayout>
3、伺服器端主要代碼UserLoginAction.java:(Servlet自然也可以,這裡藉助了strut2架構)
 1 package com.okhttp; 2  3 import java.io.IOException; 4 import java.io.PrintWriter; 5  6 import javax.security.auth.message.callback.PrivateKeyCallback.Request; 7 import javax.servlet.http.HttpServletResponse; 8  9 import org.apache.struts2.ServletActionContext;10 11 import com.opensymphony.xwork2.ActionSupport;12 13 public class UserLoginAction extends ActionSupport {14 15     private String username;16     private String password;17 18     public String login() throws IOException {19 //        System.out.println(username+ "," + password);20         HttpServletResponse response = ServletActionContext.getResponse();21         response.setCharacterEncoding("utf-8");  //防止服務端發送到到用戶端的資料出現中文亂碼22         PrintWriter pw = response.getWriter();23         pw.write("下面是伺服器端返回的資料:\n\n");24         pw.write("您提交的使用者名稱是:"+username);25         pw.flush();26         return null;27     }28 29     public String getUsername() {30         return username;31     }32 33     public void setUsername(String username) {34         this.username = username;35     }36 37     public String getPassword() {38         return password;39     }40 41     public void setPassword(String password) {42         this.password = password;43     }44 }
 struts.xml:
 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 4     "http://struts.apache.org/dtds/struts-2.0.dtd"> 5 <struts> 6     <package name="default" namespace="/" extends="struts-default"> 7         <action name="login" class="com.okhttp.UserLoginAction" method="login"> 8         </action> 9     </package>10 </struts>
附:個人網站www.nxl123.cn(後台採用Python Flask架構搭建,2019年1月1日將升級完成並正式啟用。哎,本人還是學生狗呢!網站做的不好多多提點意見和建議吧,別罵我就好!嘿嘿……以後SEO什麼的還得多向大家學習……)

Android+Struts2實現簡單的前後台互動--Android網路編程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.