您好我正在尝试将我的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>
答案 0 :(得分:2)
首先,将HTTP请求代码放入AsyncTask中。否则,请求将阻止主UI线程。还将所有try / catch语句放入一个try / catch块中,因为所有内容都与HTTP请求有关。
您可以找到如何传输HTTP Post数据here的简短代码段。
在您的代码中,此行错误,应删除:
postUserCredentials.setHeader("Content-type", "http://www.weather.com/");
如果您使用POST数据的链接页面上显示的NameValue对,我想其余代码就可以了。