1

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

这是我编写的代码:

   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>
4

1 回答 1

2

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

您可以在此处找到如何传输 HTTP Post 数据的简短片段。

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

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

如果您使用 POST 数据的链接页面上显示的 NameValue Pairs,我认为其余的代码都很好。

于 2012-05-12T10:26:47.037 回答