我想通过http post.i将数据从android传递给web尝试但是当我点击发送按钮时它没有显示在网络上帮助我解决我的问题。 这是主要的活动代码。
public class HttpPostExample extends Activity {
TextView content;
EditText fname,email,login,pass;
String Name,Email,Login,Pass;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_http_post_example);
content = (TextView)findViewById(R.id.content);
fname =(EditText)findViewById(R.id.name);
email =(EditText)findViewById(R.id.email);
login =(EditText)findViewById(R.id.loginname);
pass =(EditText)findViewById(R.id.password);
Button saveme=(Button)findViewById(R.id.save);
saveme.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)
{
try{
GetText();
}
catch(Exception ex)
{
content.setText("url exeption!");
}
}
});
}
public void GetText() throws UnsupportedEncodingException
{
Name = fname.getText().toString();
Email = email.getText().toString();
Login = login.getText().toString();
Pass = pass.getText().toString();
String data = URLEncoder.encode("name", "UTF-8") + "=" + URLEncoder.encode(Name, "UTF-8");
data += "&" + URLEncoder.encode("email", "UTF-8") + "=" + URLEncoder.encode(Email, "UTF-8");
data += "&" + URLEncoder.encode("user", "UTF-8") + "=" + URLEncoder.encode(Login, "UTF-8");
data += "&" + URLEncoder.encode("pass", "UTF-8") + "=" + URLEncoder.encode(Pass, "UTF-8");
String text = "";
BufferedReader reader=null;
// Send data
try
{
URL url = new URL("http://androidexample.com/localhost/web/Httppost.php");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the response
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
text = sb.toString();
}
catch(Exception ex)
{
}
finally
{
try
{
reader.close();
}
catch(Exception ex) {}
}
content.setText(text);
}
}
这里是主要的xml代码。
*<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stretchColumns="*" android:background="#ffffff">
<TableRow android:background="#758AA7" android:layout_margin="2dip">
<TextView android:id="@+id/output"
android:layout_height="wrap_content"
android:padding="1px"
android:text="@string/default_output" android:layout_width="wrap_content" />
<TextView android:id="@+id/content"
android:layout_height="wrap_content"
android:padding="2px"
android:text="@string/default_content" android:layout_width="fill_parent" />
</TableRow>
<TableRow android:background="#758AA7" android:layout_margin="2dip">
<Button android:text="Save On Web"
android:id="@+id/save"
android:layout_width="wrap_content"
android:layout_gravity="center"
/>
</TableRow>
<TableRow android:background="#ffffff" android:layout_margin="2dip">
<TextView style="@style/CodeFont"
android:text="@string/Name" android:layout_width="30px" android:layout_gravity="left"/>
<EditText android:id="@+id/name"
android:layout_width="wrap_content"
android:gravity="left" android:layout_gravity="left" android:width="210px"/>
</TableRow>
<TableRow android:background="#ffffff" android:layout_margin="2dip">
<TextView style="@style/CodeFont"
android:text="@string/Email" android:layout_gravity="left"/>
<EditText android:id="@+id/email"
android:layout_width="wrap_content" android:layout_gravity="left" android:width="210px"/>
</TableRow>
<TableRow android:background="#ffffff" android:layout_margin="2dip">
<TextView style="@style/CodeFont"
android:text="@string/LoginName" android:layout_gravity="left"/>
<EditText android:id="@+id/loginname"
android:layout_width="wrap_content" android:layout_gravity="left" android:width="210px"/>
</TableRow>
<TableRow android:background="#ffffff" android:layout_margin="2dip">
<TextView style="@style/CodeFont"
android:text="@string/Password" android:layout_gravity="left"/>
<EditText android:id="@+id/password"
android:layout_width="wrap_content" android:layout_gravity="left" android:width="210px"/>
</TableRow>
</TableLayout>*
这是我的php脚本Httppost.php
<?php
$name = urldecode($_POST['name']);
$user = urldecode($_POST['user']);
$email = urldecode($_POST['email']);
$pass = urldecode($_POST['pass']);
print " ==== POST DATA =====
Name : $name
Email : $email
User : $user
Pass : $pass";
?>
当我点击网络上的保存时,它不会显示在网络上。
答案 0 :(得分:0)
更改httpurlconnection
代码以在后台线程中运行以解决您的问题。
如果您在MAinthread
中执行,则会在蜂窝状结构中获得networkonMAinThreadException