当前位置:编程学习 > wap >>

android手机和服务器端通信

手机是android的,手机上的一个应用(不是浏览器)请求服务器的数据,服务器端用PHP+MYSQL,Http Post的话怎么实现收发数据呢?以前没写过手机和服务器的交互,最好是给一小段代码,跪谢!网上看的没有满意的答案啊。。都是说说大概,没有具体的。用webservice什么的也行,只要能说的清楚。

--------------------编程问答-------------------- 求解答啊!。。。 --------------------编程问答-------------------- Java支持HTTP的啊 --------------------编程问答-------------------- ==马上来了 --------------------编程问答-------------------- package com.ccas.roadsideconnect.communications;


import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.net.Socket;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import com.ccas.roadsideconnect.exceptions.ServerDataException;
import com.ccas.roadsideconnect.utilities.RoadsideConnect;

import org.apache.http.Header;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;

public class HTTPClient implements RoadsideConnect {
private static final String TAG = "HttpClient";
static Context context;
static JSONObject responseinjson;


/*
 * sends the json object to sever
 */
public JSONObject SendHttpPost(JSONObject jsonObjSend) throws Throwable 
{
DefaultHttpClient httpclient = null;
try 
{
httpclient = getClient();//new DefaultHttpClient();
HttpParams params = httpclient.getParams();
//HttpConnectionParams.setConnectionTimeout(params, 90000);
HttpConnectionParams.setSoTimeout(params,90000);
HttpPost httpPostRequest = new HttpPost(URL);
StringEntity se;
se = new StringEntity(jsonObjSend.toString(), "UTF-8");
// Set HTTP parameters
httpPostRequest.setEntity(se);
httpPostRequest.setHeader("Connection", "Keep-Alive");
httpPostRequest.setHeader("Content-type", "text/plain");

Header[] headers = httpPostRequest.getAllHeaders();
for (int i = 0; i < headers.length; i++ )
{
String name = headers[i].getName();
String value = headers[i].getValue();
System.out.println (name + " = " + value + " \n");
}
BasicResponseHandler handler = new BasicResponseHandler();
//HttpResponse response = httpclient.execute(httpPostRequest);
String response = (String) httpclient.execute(httpPostRequest,handler);
System.out.println("The response is \n" + response);
try 
{
responseinjson = new JSONObject(response);

catch (JSONException e) 
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new JSONException(e.getMessage());
}
//System.out.println("The response object is " + responseinjson + "\n");
}catch (java.net.ConnectException ce)
{
// More about HTTP exception handling in another tutorial.
// For now we just print the stack trace.
ce.printStackTrace();
throw new ServerDataException("ConnectException"); 
}
catch (java.net.SocketTimeoutException st)
{
// More about HTTP exception handling in another tutorial.
// For now we just print the stack trace.
st.printStackTrace();
throw new ServerDataException("timed out"); 
}
catch (java.net.SocketException se)
{
// More about HTTP exception handling in another tutorial.
// For now we just print the stack trace.
se.printStackTrace();
throw new ServerDataException("timed out"); 
}
catch (javax.net.ssl.SSLException sl)
{
// More about HTTP exception handling in another tutorial.
// For now we just print the stack trace.
sl.printStackTrace();
throw new ServerDataException("timed out"); 
}
catch (org.apache.http.conn.ConnectTimeoutException ct)
{
// More about HTTP exception handling in another tutorial.
// For now we just print the stack trace.
ct.printStackTrace();
throw new ServerDataException("timed out"); 
}
catch (java.net.UnknownHostException un)
{
// More about HTTP exception handling in another tutorial.
// For now we just print the stack trace.
un.printStackTrace();
throw new ServerDataException("timed out"); 
}
catch (org.apache.http.client.HttpResponseException ape)
{
// More about HTTP exception handling in another tutorial.
// For now we just print the stack trace.
ape.printStackTrace();
throw new ServerDataException("timed out"); 
}

catch (Throwable t)
{
// More about HTTP exception handling in another tutorial.
// For now we just print the stack trace.
t.printStackTrace();
throw t; 
} finally {
httpclient.getConnectionManager().shutdown();
httpclient = null;
}
return responseinjson;
}

/*
 * gets the stack trace in a string format to upload to Flurry
 */
public static String getStackTrace(Throwable aThrowable) {
    final Writer result = new StringWriter();
    final PrintWriter printWriter = new PrintWriter(result);
    aThrowable.printStackTrace(printWriter);
    return result.toString();
}

/*
 * gets the http client with allowing all host names for https protocol
 * 
 */
private DefaultHttpClient getClient() {
        BasicHttpParams httpParameters = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParameters, 60000);
        HttpConnectionParams.setSoTimeout(httpParameters, 60000);
        DefaultHttpClient client;

        // registers schemes for both http and httpsb

        SchemeRegistry registry = new SchemeRegistry();

        registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));

        KeyStore trustStore;
        SSLSocketFactory sslSocketFactory;
        try {
            trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
            trustStore.load(null, null);
             sslSocketFactory = new MySSLSocketFactory(trustStore);
        } catch (Exception e) {
            e.printStackTrace();
            sslSocketFactory = SSLSocketFactory.getSocketFactory();
        }

        sslSocketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

        registry.register(new Scheme("https", sslSocketFactory, 443));

        ThreadSafeClientConnManager manager = new ThreadSafeClientConnManager(httpParameters,
                registry);

        client = new DefaultHttpClient(manager, httpParameters);
        //client.setHttpRequestRetryHandler(new HttpRequestRetryHandler());
        return client;
    }

/*
 * Custom SSL Socket Factory
 */
     class MySSLSocketFactory extends SSLSocketFactory {
        SSLContext sslContext = SSLContext.getInstance("TLS");

        public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
            super(truststore);

            TrustManager tm = new X509TrustManager() {
                public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                }

                public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                }

                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
            };

            sslContext.init(null, new TrustManager[] { tm }, null);
        }

        @Override
        public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
            return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
        }

        @Override
        public Socket createSocket() throws IOException {
            return sslContext.getSocketFactory().createSocket();
        }
    }


} --------------------编程问答-------------------- package com.ccas.roadsideconnect.communications;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JSONResponseParser {

/*
 * Parse the JSON object for the Dispatch Job List
 */
JSONArray parseResponseDispatchJobList(JSONObject jsonToParse) {

try {
JSONObject bodyreturned = (JSONObject) jsonToParse.get("Body");
JSONArray dispatchjoblist = bodyreturned
.getJSONArray("DispatchJobList");
Log.i("JobListResponse", dispatchjoblist.toString() + "");
return dispatchjoblist;
} catch (JSONException e) {
System.out.println("There was an error parsing SearchPOI Reponse!");
e.printStackTrace();
}

return null;
}

/*
 * Parse the JSON object for the Login Response
 */
String parseLoginResponse(JSONObject jsonToParse) {
try {
JSONObject bodyreturned = (JSONObject) jsonToParse.get("Body");
String loginstatus = bodyreturned.getString("LoginStatus");
return loginstatus;
} catch (JSONException e) {
System.out.println("There was an error parsing SearchPOI Reponse!");
e.printStackTrace();
}
return null;
}



String parseSignatureResponse(JSONObject jsonToParse) {
JSONObject bodyreturned;
try {
bodyreturned = (JSONObject) jsonToParse.get("Body");
String signatureID = bodyreturned.getString("SignatureID");
return signatureID;
} catch (JSONException e) {
e.printStackTrace();
}

return null;

}

/*
 * Parse the JSON object for the GPSLocation Response
 */

JSONObject parseGPSLocationResponse(JSONObject jsonToParse) {
try {
JSONObject bodyreturned = (JSONObject) jsonToParse.get("Body");
JSONObject locationstatus = bodyreturned
.getJSONObject("DispatchJobStatus");
return locationstatus;

} catch (JSONException e) {
e.printStackTrace();
}
return null;
}

/*
 * Parse the JSON object for the Version Response
 */
String versionCheckResponse(JSONObject jsonToParse){
String versionstatus = "";
try {
JSONObject bodyreturned = (JSONObject) jsonToParse.get("Body");
versionstatus =((JSONObject)bodyreturned.get("ServiceResponse")).getBoolean("IsVersionValid")+"";
Log.i("versionresponse",versionstatus);
return versionstatus;
} catch (JSONException e) {
System.out.println("There was an error parsing versioncheck Reponse!");
e.printStackTrace();
}
return versionstatus;
}

String parseRegisterResponse (JSONObject jsonToParse){
JSONObject bodyreturned;
try {
bodyreturned = (JSONObject) jsonToParse.get("Body");
Log.i("registerresponse", bodyreturned.toString());
String registerStatus=bodyreturned.getString("ProfileID");
Log.i("registerResponse", registerStatus);
return registerStatus;
} catch (JSONException e) {
System.out.println("There was an error parsing register Reponse!");
e.printStackTrace();
}

return null;
}
}
--------------------编程问答--------------------
引用 3 楼 lovexjyong 的回复:
==马上来了



服务器其他代码使用PHP写的啊。。装的不是TOMCAT。。请问有PHP的代码吗? --------------------编程问答--------------------
PHP的代码没有。吧知道PHP后台有没有DOGET 和POST
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,