2012-05-12 33 views
1

嗨我想将我的Android TextBox连接到“http://www.weather.com”文本框?如何将我的应用程序文本框中输入的“字符串”传输到网站textBOx?如何将Android应用程序的数据输入到网站文本框?

这里是我写的代码:

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> 

回答

2

首先,把HTTP请求代码到的AsyncTask。否则,请求会阻止主UI线程。所有这些try/catch语句都放在一个try/catch块中,因为所有事情都涉及HTTP请求。

你可以找到一个简短的片段如何转移HTTP发布数据here

在代码中,这条线是错误的,应予删除:

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

如果您使用的是显示为POST数据链接页面上NameValue对,代码的其余部分是好的,我认为。

相关问题