发布数据,Android应用程序到本地主机 [英] post data to localhost in android app

查看:109
本文介绍了发布数据,Android应用程序到本地主机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新来的Andr​​oid和正在试图发布数据从我的Andr​​oid应用程序到本地主机。虽然它没有显示任何错误,并总是说命令发送的,它不写入文件或者它没有公布任何数据。任何人都可以发现问题,或者告诉我怎样才能解决这个问题?

MainActivity.java

 包com.example.register;进口java.io.IOException异常;
进口的java.util.ArrayList;
进口的java.util.List;
进口org.apache.http.Htt presponse;
进口org.apache.http.NameValuePair;
进口org.apache.http.client.ClientProtocolException;
进口org.apache.http.client.HttpClient;
进口org.apache.http.client.entity.UrlEn codedFormEntity;
进口org.apache.http.client.methods.HttpPost;
进口org.apache.http.impl.client.DefaultHttpClient;
进口org.apache.http.message.BasicNameValuePair;
进口android.app.Activity;
进口android.opengl.Visibility;
进口android.os.AsyncTask;
进口android.os.Bundle;
进口android.view.Menu;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.Button;
进口android.widget.EditText;
进口android.widget.ProgressBar;
进口android.widget.TextView;
进口android.widget.Toast;公共类MainActivity扩展活动实现OnClickListener {私人的EditText值;
私人按钮BTN;
私人进度PB;
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
值=(EditText上)findViewById(R.id.editText1);
BTN =(按钮)findViewById(R.id.button1);
PB =(进度)findViewById(R.id.progressBar1);
pb.setVisibility(View.GONE);
btn.setOnClickListener(本);
}@覆盖
公共布尔onCreateOptionsMenu(菜单菜单){
。getMenuInflater()膨胀(R.menu.main,菜单);
返回true;
}公共无效的onClick(视图v){
// TODO自动生成方法存根
如果(。value.getText()的toString()长()。1){
// 超出范围
Toast.makeText(这一点,请输入的东西,Toast.LENGTH_LONG).show();
}其他{
pb.setVisibility(View.VISIBLE);
新MyAsyncTask()执行。(value.getText()的toString());
}}私有类MyAsyncTask扩展的AsyncTask<字符串,整数,双> {@覆盖
保护双doInBackground(字符串... PARAMS){
// TODO自动生成方法存根
POSTDATA(PARAMS [0]);
返回null;
}保护无效onPostExecute(双人间结果){
pb.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(),命令发送,Toast.LENGTH_LONG).show();
}
保护无效onProgressUpdate(整数...进度){
pb.setProgress(进展[0]);
}公共无效POSTDATA(字符串valueIWantToSend){
//创建一个新的HttpClient和邮政头
HttpClient的HttpClient的=新DefaultHttpClient();
HttpPost httppost =新HttpPost(HTTP://localhost/text.php);尝试{
//添加你的数据
清单<&的NameValuePair GT; namevaluepairs中=新的ArrayList<&的NameValuePair GT;();
nameValuePairs.add(新BasicNameValuePair(myHttpData,valueIWantToSend));
httppost.setEntity(新UrlEn codedFormEntity(namevaluepairs中));//执行HTTP POST请求
HTT presponse响应= httpclient.execute(httppost);}赶上(ClientProtocolException E){
// TODO自动生成catch块
}赶上(IOException异常五){
// TODO自动生成catch块
}
}}
}

activity_main.xml中

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent><的TextView
机器人:ID =@ + ID / textView1
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentTop =真
机器人:layout_centerHorizo​​ntal =真
机器人:layout_marginTop =20dp
机器人:文字=请在下面输入一句:
机器人:textAppearance =:/>中的Andr​​oid ATTR / textAppearanceLarge?<的EditText
机器人:ID =@ + ID / editText1
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_below =@ + ID / textView1
机器人:layout_centerHorizo​​ntal =真
机器人:layout_marginTop =30dp
机器人:EMS =10
机器人:提示=
>< requestFocus的/>
< /&的EditText GT;<进度
机器人:ID =@ + ID / progressBar1
风格=机器人:ATTR / progressBarStyleLarge
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_below =@ + ID / editText1
机器人:layout_centerHorizo​​ntal =真
机器人:layout_marginTop =24dp/><按钮
机器人:ID =@ + ID /按钮1
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignLeft =@ + ID / textView1
机器人:layout_alignRight =@ + ID / editText1
机器人:layout_below =@ + ID / progressBar1
机器人:layout_marginTop =24dp
机器人:文字=提交/>< / RelativeLayout的>


解决方案

您必须使用 10.0.2.2 IP地址与本地主机系统连接。

  HttpPost httppost =新HttpPost(HTTP://localhost/text.php);

  HttpPost httppost =新HttpPost(http://10.0.2.2/text.php);

I am new to android and am trying to post data to localhost from my android app. While it is not showing any errors, and always say command sent, it is not writing the file or perhaps it is not posting any data. Can anyone spot the problem, or tell me how can I fix it?

MainActivity.java

package com.example.register;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.opengl.Visibility;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

private EditText value;
private Button btn;
private ProgressBar pb;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
value=(EditText)findViewById(R.id.editText1);
btn=(Button)findViewById(R.id.button1);
pb=(ProgressBar)findViewById(R.id.progressBar1);
pb.setVisibility(View.GONE);
btn.setOnClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

public void onClick(View v) {
// TODO Auto-generated method stub
if(value.getText().toString().length()<1){
// out of range
Toast.makeText(this, "please enter something", Toast.LENGTH_LONG).show();
}else{
pb.setVisibility(View.VISIBLE);
new MyAsyncTask().execute(value.getText().toString());  
}

}

private class MyAsyncTask extends AsyncTask<String, Integer, Double>{

@Override
protected Double doInBackground(String... params) {
// TODO Auto-generated method stub
postData(params[0]);
return null;
}

protected void onPostExecute(Double result){
pb.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(), "command sent", Toast.LENGTH_LONG).show();
}
protected void onProgressUpdate(Integer... progress){
pb.setProgress(progress[0]);
}

public void postData(String valueIWantToSend) {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://localhost/text.php");

try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("myHttpData", valueIWantToSend));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);

} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}

}
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="Enter Something Below:"
android:textAppearance="?android:attr/textAppearanceLarge" />

<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:ems="10"
android:hint=""
>

<requestFocus />
</EditText>

<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText1"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp" />

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_alignRight="@+id/editText1"
android:layout_below="@+id/progressBar1"
android:layout_marginTop="24dp"
android:text="Submit" />

</RelativeLayout>

解决方案

You have to use 10.0.2.2 IP address to connect with localhost system.

HttpPost httppost = new HttpPost("http://localhost/text.php");

Should be

HttpPost httppost = new HttpPost("http://10.0.2.2/text.php");

这篇关于发布数据,Android应用程序到本地主机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆