<button id="dvsem"></button>

        RELATEED CONSULTING
        服务咨询
        选择下列产品马上在线沟通
        服务时间:24小时服务
        你可能遇到了下面的问题
        关闭右侧工具栏

        大唐传易http协议和客户端的交互学问

        我们主要说的是客户端在服务端上面的操作,主要是在客户端上面的创建。

        android客户端端:

        ①新建一个android application:Hello。

        ②引入org.json.jar。

        ③在activity_main.xml布局文件中加入两个EditText,来输入用户名和密码,添加按钮来提交json数据。

        ④先封装一下访问网络的HTTP操作:
        WebUtil.java:

        1. import org.apache.http.HttpResponse;  
        2. import org.apache.http.client.HttpClient;  
        3. import org.apache.http.client.methods.HttpPost;  
        4. import org.apache.http.entity.StringEntity;  
        5. import org.apache.http.impl.client.DefaultHttpClient;  
        6. import org.apache.http.params.BasicHttpParams;  
        7. import org.apache.http.params.HttpParams;  
        8. import org.apache.http.util.EntityUtils;  
        9. import org.json.JSONArray;  
        10.   
        11. import cn.domain.hello.config.Config;  
        12.   
        13. public class WebUtil {  
        14.     public static JSONArray getJSONArrayByWeb(String methodName,  
        15.             JSONArray params) {  
        16.   
        17.         String returnValue = "";  
        18.         JSONArray result = null;  
        19.         HttpParams httpParams = new BasicHttpParams();  
        20.         httpParams.setParameter("charset""UTF-8");  
        21.         HttpClient hc = new DefaultHttpClient(httpParams);  
        22.         HttpPost hp = new HttpPost(Config.SERVER_IP + "/HelloServer/servlet/"  
        23.                 + methodName);  
        24.         try {  
        25.             hp.setEntity(new StringEntity(params.toString(), "UTF-8"));  
        26.             HttpResponse hr = hc.execute(hp);  
        27.             if (hr.getStatusLine().getStatusCode() == 200) {  
        28.                 returnValue = EntityUtils.toString(hr.getEntity(), "UTF-8");  
        29.                 result = new JSONArray(returnValue);  
        30.             }  
        31.         } catch (Exception e) {  
        32.             // TODO Auto-generated catch block  
        33.             e.printStackTrace();  
        34.         }  
        35.         if (hc != null) {  
        36.             hc.getConnectionManager().shutdown();  
        37.         }  
        38.         return result;  
        39.     }  
        40. }  
        41. ⑤在MainActivity中实现登录操作:

           

           

          [java] view plain copy
           
          1. package cn.domain.hello.activity;  
          2.   
          3. import org.json.JSONArray;  
          4. import org.json.JSONException;  
          5. import org.json.JSONObject;  
          6.   
          7. import cn.domain.hello.R;  
          8. import cn.domain.hello.config.Config;  
          9. import cn.domain.hello.util.WebUtil;  
          10. import android.app.Activity;  
          11. import android.os.AsyncTask;  
          12. import android.os.Bundle;  
          13. import android.util.Log;  
          14. import android.view.View;  
          15. import android.view.ViewStub;  
          16. import android.view.View.OnClickListener;  
          17. import android.view.ViewGroup;  
          18. import android.widget.Button;  
          19. import android.widget.EditText;  
          20. import android.widget.TextView;  
          21. import android.widget.Toast;  
          22.   
          23. public class MainActivity extends Activity {  
          24.   
          25.     private EditText etUsername;  
          26.     private EditText etPassword;  
          27.     private Button btnLogin;  
          28.     private ViewGroup vsProgress;  
          29.   
          30.     @Override  
          31.     protected void onCreate(Bundle savedInstanceState) {  
          32.         super.onCreate(savedInstanceState);  
          33.         setContentView(R.layout.activity_main);  
          34.         this.etUsername = (EditText) this.findViewById(R.id.etUsername);  
          35.         this.etPassword = (EditText) this.findViewById(R.id.etPassword);  
          36.         this.btnLogin = (Button) this.findViewById(R.id.btnLogin);  
          37.         this.btnLogin.setOnClickListener(new OnClickListener() {  
          38.   
          39.             @Override  
          40.             public void onClick(View v) {  
          41.                 // TODO Auto-generated method stub  
          42.                 String username = MainActivity.this.etUsername.getText()  
          43.                         .toString().trim();  
          44.                 String password = MainActivity.this.etPassword.getText()  
          45.                         .toString().trim();  
          46.                 if ("".equals(username)) {  
          47.                     Toast.makeText(MainActivity.this"请填写用户名",  
          48.                             Toast.LENGTH_SHORT).show();  
          49.                     return;  
          50.                 }  
          51.                 if ("".equals(password)) {  
          52.                     Toast.makeText(MainActivity.this"请填写密码",  
          53.                             Toast.LENGTH_SHORT).show();  
          54.                     return;  
          55.                 }  
          56.                 //如果已经填写了用户名和密码,执行登录操作  
          57.                 executeLogin(username, password);  
          58.             }  
          59.         });  
          60.   
          61.     }  
          62.   
          63.     private void executeLogin(String username, String password) {  
          64.         new LoginTask().execute(username, password);  
          65.     }  
          66.   
          67.     private void onLoginComplete(Integer userId) {  
          68.         if (userId == null || userId == 0) {//如果没有获取到用户ID,说明登录失败  
          69.             Toast.makeText(MainActivity.this"用户名或密码错误", Toast.LENGTH_SHORT)  
          70.                     .show();  
          71.             if (vsProgress != null) {  
          72.                 vsProgress.setVisibility(View.INVISIBLE);  
          73.             }  
          74.             return;  
          75.         }  
          76.         if (vsProgress != null) {  
          77.             vsProgress.setVisibility(View.INVISIBLE);  
          78.         }  
          79.         //如果成功获取到返回的用户ID,说明登录成功,跳转到HelloActivity  
          80.         Toast.makeText(MainActivity.this"登陆成功", Toast.LENGTH_SHORT).show();  
          81.         HelloActivity.actionStart(MainActivity.this, userId, etUsername  
          82.                 .getText().toString());  
          83.     }  
          84.   
          85.     private class LoginTask extends AsyncTask<String, Void, Integer> {  
          86.   
          87.         @Override  
          88.         protected void onPreExecute() {  
          89.             // TODO Auto-generated method stub  
          90.             super.onPreExecute();  
          91.             //进行登录验证时,显示登录进度条  
          92.             if (vsProgress == null) {  
          93.                 ViewStub vs = (ViewStub) findViewById(R.id.vsProgress);  
          94.                 vsProgress = (ViewGroup) vs.inflate();  
          95.             } else {  
          96.                 vsProgress.setVisibility(View.VISIBLE);  
          97.             }  
          98.         }  
          99.   
          100.         @Override  
          101.         protected Integer doInBackground(String... params) {  
          102.             // TODO Auto-generated method stub  
          103.             Integer result = null;  
          104.             JSONArray reqValue;  
          105.             try {  
          106.                 //将用户名和密码封装到JSONArray中,进行HTTP通信  
          107.                 reqValue = new JSONArray().put(new JSONObject().put("username",  
          108.                         params[0]).put("password", params[1]));  
          109.                 JSONArray rec = WebUtil.getJSONArrayByWeb(Config.METHOD_LOGIN,  
          110.                         reqValue);  
          111.                 if (rec != null) {//如果成功获取用户ID  
          112.                     result = rec.getJSONObject(0).getInt("userId");  
          113.                 }  
          114.             } catch (JSONException e) {  
          115.                 // TODO Auto-generated catch block  
          116.                 e.printStackTrace();  
          117.             }  
          118.             return result;  
          119.         }  
          120.   
          121.         @Override  
          122.         protected void onPostExecute(Integer result) {  
          123.             // TODO Auto-generated method stub  
          124.             super.onPostExecute(result);  
          125.             //回调  
          126.             onLoginComplete(result);  
          127.         }  
          128.   
          129.     }  
          130. }  具体的其它相关类请下载下面的源码查看。记住一定不要忘了在AndroidManifest.xml文件中添加访问网络的权限:

             

            [html] view plain copy
             
            1. <uses-permission android:name="android.permission.INTERNET" />  


        大唐传易福州网站建设推荐阅读:

        管家婆一句赢