Android集合SSH構築サーバクライアント要求


弟は以前J 2 EEを学んで、プロジェクトはandroidを開発する必要があるため、臨時に1週間以上補充して、主に携帯電話の端とサーバーの端がインタラクティブで、双方向に開発しました.
まずサーバ側ではSSHフレームワークを採用し、struts 2はjsonプラグインを集合し、サーバとクライアントの情報を交互に採用したJSONを伝送し、サーバ側でStruts 2を使用したので、JSONプラグインを1つ装着しました.そうすると、サービス側の情報をJSON形式で携帯電話側に送信しました~~以下はコードです.レンガを撮ってください~~
まず、サーバ側にSSHフレームワークを構築し、具体的な詳細は以下の通りではない.

	<package name="login" extends="json-default">
	    <action name="login" class="com.jclick.test.LoginAction" method="login">
	       <result type="json"><paramname="includeProperties">result</param></result>
	    </action>
	</package>

携帯電話端末のコードは以下の通りです.
まず、携帯電話側にはキャッシュクラスがあり、主に携帯電話側がアクセスする必要があるデータをキャッシュするために使用されます.このようなメリットは、携帯電話とサーバーの相互作用を節約し、単一の例で実現することができます.

package com.jclick.cache;

import com.jclick.bean.User;

public class Cache {
	
	private User User;
	
	private Cache(){
		
	}
	/**      */
	private static class CacheHolder{
		private static final Cache INSTANCE = new Cache();
	}
	public Cache getInstance(){
		return CacheHolder.INSTANCE;
	}
	public User getUser() {
		return User;
	}
	public void setUser(User User) {
		this.User = User;
	}

}

次に携帯電話側のプロトコルを書き始め、ユーザーはサーバーに要求を送信し、同時にサーバーは携帯電話側の情報にフィードバックした.

package com.jclick.protocol;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

public class BaseProtocol {
	private StringBuilder sb = new StringBuilder();

	private HttpClient httpClient;
	private HttpPost httpRequest;
	private HttpResponse response;

	private List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();

	BaseProtocol() {
		httpClient = new DefaultHttpClient();
	}

	/**
	 *          
	 * 
	 * @param url
	 * @throws Exception
	 */
	protected void pack(String url) throws Exception {
		httpClient = new DefaultHttpClient();
		httpRequest = new HttpPost(url);

		httpRequest.setEntity(new UrlEncodedFormEntity(nameValuePair));
		response = httpClient.execute(httpRequest);
	}

	/**
	 *       
	 * 
	 * @param url
	 * @return
	 * @throws Exception
	 */
	protected void parse() throws Exception {
		// TODO      500 200
		if (response.getStatusLine().getStatusCode() == 200) {

			BufferedReader bufferedReader2 = new BufferedReader(
					new InputStreamReader(response.getEntity().getContent()));
			for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2
					.readLine()) {
				sb.append(s);
			}
		}
	}

	/**
	 *         
	 * 
	 * @param key
	 * @param value
	 */
	public void addNameValuePair(String key, String value) {
		nameValuePair.add(new BasicNameValuePair(key, value));
	}

	/**
	 *   JSONObject      
	 * 
	 * @return
	 * @throws JSONException
	 */
	public JSONObject getJSON() throws JSONException {
		return new JSONObject(sb.toString());
	}

}


次にログインプロトコルです.ここではログインをシミュレートして使用するクラスにすぎません.参考にしてください.

package com.jclick.protocol;

import org.json.JSONObject;

import com.jclick.bean.User;

public class LoginProtocol extends BaseProtocol{
	
	private final static String URL = "http://localhost:8080/test/login";
	
	public boolean checkLogin(User usr){
		try {
			pack(URL);
			parse();
			JSONObject obj = this.getJSON();
			if(obj.getString("result").equals("failed")){
				return false;
			}else{
				return true;
			}
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

}


次に、ユーザー情報を保存するために主に使用されるUserエンティティークラスです.

package com.jclick.bean;

public class User {
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}

}


最後にLoginActivityで登録を判断するコードです.詳細コードはもう貼られません.登録を判断するコードは1つだけ貼られています.

		private void checkedData(){
			username = ((EditText)findViewById(R.id.username)).getText().toString();
			password = ((EditText)findViewById(R.id.password)).getText().toString();
			 
			User user = new User();
			user.setUsername(username);
			user.setPassword(password);
			LoginProtocol login = new LoginProtocol();
			boolean result = login.checkLogin(user);
			
			if(result){ 				SpiderCache.getInstance().setUserSession(user);
				Toast.makeText(getApplicationContext(), "    ", 1000).show();
				Intent intent = new Intent ();
				intent.setClass(LoginActivity.this,WelcomeActivity.class);
				startActivity(intent);
			}else{ 				Toast.makeText(LoginActivity.this,"         ,     !",1000).show();
			}
		}

以上のコードは皆さんと共有するために、携帯電話の端末とサーバーの双方向開発がとても爽やかだと感じています~~同時にandroidへの興味が大幅に向上して、それは私が想像していたほど難しくありません~~~