如何将数据从Android应用程序输入到网站TextBox?

时间:2012-05-12 10:07:59

标签: android http-post

您好我正在尝试将我的Android TextBox连接到“http://www.weather.com”TextBox?如何将我的应用程序文本框中输入的“字符串”传输到网站textBOx?

这是我写的代码:

   package in.niteesh.connectToServer;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class ConnectServerActivity extends Activity 
{
    //private static final int LENGTH_SHORT = 0;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //Take a Login Button
        Button btnLogin = (Button)findViewById(R.id.btnLogin);
        //Set the onClick Event
        btnLogin.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {

                    //Get TextBox from the layout
                    EditText etUserName = (EditText)findViewById(R.id.etUser);

                    //Client to make the request to your weather.com
                    DefaultHttpClient myClient = new DefaultHttpClient();

                    //This is where you put the information you're sending.
                    HttpPost postUserCredentials = new HttpPost(getString(R.string.LoginAddress));   //Http Post is used for sending SOAP requests
                    HttpEntity postParameters = null; // Extract the byte to a string form 
                    try 
                    {
                        postParameters = new StringEntity("u=" + etUserName.getText());
                    } 
                    catch (UnsupportedEncodingException e) 
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                    postUserCredentials.setHeader("Content-type", "http://www.weather.com/");
                    postUserCredentials.setEntity(postParameters);

                    HttpResponse postResponse = null;
                    try 
                    {
                        postResponse = myClient.execute(postUserCredentials);
                    } 
                    catch (ClientProtocolException e) 
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } 
                    catch (IOException e) 
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    HttpEntity postResponseEntity = postResponse.getEntity();

                    try 
                    {
                        String result = EntityUtils.toString(postResponseEntity);

                    } 
                    catch (ParseException e) 
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } 
                    catch (IOException e) 
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
            }
        });

    }
}

Main.xml代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <TextView android:id="@+id/tvUser" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Username:" />
    <EditText android:id="@+id/etUser" android:layout_width="match_parent" android:layout_height="wrap_content" />
    <Button android:id="@+id/btnLogin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Login" />
</LinearLayout>

1 个答案:

答案 0 :(得分:2)

首先,将HTTP请求代码放入AsyncTask中。否则,请求将阻止主UI线程。还将所有try / catch语句放入一个try / catch块中,因为所有内容都与HTTP请求有关。

您可以找到如何传输HTTP Post数据here的简短代码段。

在您的代码中,此行错误,应删除:

postUserCredentials.setHeader("Content-type", "http://www.weather.com/");

如果您使用POST数据的链接页面上显示的NameValue对,我想其余代码就可以了。