0

如何从 android 向我的网络服务器上传一个简单的整数变量?我想发送温度变量。我的服务器支持 php。需要来自网络服务器的权限?我必须创建一个带有变量的 temperature.php 文件并上传它?

4

1 回答 1

0

假设您的服务器接受 POST 请求,请查看以下 HTTP POST 请求示例:

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);  
//you should put here your temp variable
nameValuePairs.add(new BasicNameValuePair("temperature", String.valueOf(30)));

HttpPost request = post("http://mysite.com/temperature.php", nameValuePairs);

DefaultHttpClient client = generateHttpClient();
HttpResponse httpResponse = client.execute(request);

在哪里:

public static DefaultHttpClient generateHttpClient(){
        HttpParams params = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(params, TIMEOUT_CONNECTION);
        HttpConnectionParams.setSoTimeout(params, TIMEOUT_SOCKET);
        SchemeRegistry registry = new SchemeRegistry();
        registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));

        try{


KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
        trustStore.load(null, null);

        SSLSocketFactory sf = new EasySSLSocketFactory(trustStore);
        sf.setHostnameVerifier(
               SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
        registry.register(new Scheme("https", sf, 443));
    }catch (Exception e) {
        e.printStackTrace();
    }

//      params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION,             HttpVersion.HTTP_1_1);
    ClientConnectionManager cm = new ThreadSafeClientConnManager(params, registry);
    DefaultHttpClient client = new DefaultHttpClient(cm, params);
    client.setKeepAliveStrategy(new ConnectionKeepAliveStrategy() { 
        @Override 
        public long getKeepAliveDuration(HttpResponse response, HttpContext 
    context) { 
            return 60; // seconds 
        } 

    }); 

    return client;

}

失踪的班级:

import java.io.IOException;
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 org.apache.http.conn.ssl.SSLSocketFactory;
public class EasySSLSocketFactory extends SSLSocketFactory {
        SSLContext sslContext = SSLContext.getInstance("TLS");

        public EasySSLSocketFactory(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();
    }

}

于 2012-12-17T12:23:25.827 回答