Android API 14-将数据发布到HTTP

Android API 14-将数据发布到HTTP,android,sdk,Android,Sdk,我在开发Android应用程序方面非常缺乏经验,而且我不能编写很多Java代码。我已经在谷歌上搜索了大约2个小时,尝试了很多不同的例子,比如如何将POST数据发送到HTTP web服务器页面并获取输出的数据,但都没有成功。我使用的是Android SDK版本4.0(API 14),有人知道怎么做吗?只需简单地发布一些数据,并获得输出 谢谢 编辑:这是我当前的代码 package me.babblebox.application; import java.io.IOException; impo

我在开发Android应用程序方面非常缺乏经验,而且我不能编写很多Java代码。我已经在谷歌上搜索了大约2个小时,尝试了很多不同的例子,比如如何将POST数据发送到HTTP web服务器页面并获取输出的数据,但都没有成功。我使用的是Android SDK版本4.0(API 14),有人知道怎么做吗?只需简单地发布一些数据,并获得输出

谢谢

编辑:这是我当前的代码

package me.babblebox.application;

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.os.Bundle;
import android.view.View;

public class BabbleBoxActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    public void check_login() {
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://babblebox.me/android/test.php");

        try {
            // Add your data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("id", "12345"));
            nameValuePairs.add(new BasicNameValuePair("stringdata", "Hi"));
            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
        }
    }
    public void check_login_button(View v) {
           check_login();
    }
}
package me.babblebox.application;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.ClientProtocolException;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.message.BasicNameValuePair;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.view;
公共类BabbleBoxActivity扩展活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
公共无效检查\u登录(){
//创建一个新的HttpClient和Post头
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://babblebox.me/android/test.php");
试一试{
//添加您的数据
List nameValuePairs=新的ArrayList(2);
添加(新的BasicNameValuePair(“id”,“12345”);
添加(新的BasicNameValuePair(“stringdata”、“Hi”);
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
//执行HTTP Post请求
HttpResponse response=httpclient.execute(httppost);
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
}捕获(IOE异常){
//TODO自动生成的捕捉块
}
}
公共作废检查\登录\按钮(视图v){
检查_login();
}
}
清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="me.babblebox.application"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="14" /><application android:icon="@drawable/bb_launch_icon" android:label="@string/app_name" android:testOnly="false" android:name=".BabbleBox" android:enabled="true">
        <activity android:label="@string/app_name" android:name=".BabbleBoxActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET" />

</manifest>

调用该方法的按钮XML:

<Button
        android:id="@+id/Button_Login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login"
        android:onClick="check_login_button"/>

并调用“使布局XML与以下内容类似”:

<Button 
   android:text="Calling From XML Layout"
   android:id="@+id/Button04" android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:onClick="buttonListener">
</Button>


您必须向侦听器方法添加一个参数,即视图。

我已经尝试过这个参数-无论何时调用它,在我的模拟器上都会显示“不幸的是,APPNAME已停止”。下面是日志:@ThomasMosey您在哪里调用此检查\u login()方法?在一个buttons onClick函数的main.xml文件中。@Thomas:发布包含调用
check\u login()
的按钮的xml布局。从您的日志中可以看出,您的定义可能不正确。@Thomas:请看我对您原始问题的评论。好的,明白了。必须将单击处理方法定义为接受
视图
参数。换句话说…
public void check\u login(View v){…}
OK,发布一些更新的日志以查看现在的异常情况。@MisterSquonk请再次检查我的OP,我已经更新了它。您上载的新日志显示了一些不同的内容-
networkMainThreadException
。这是为API 11(蜂窝)和更高版本引入的。简而言之,您不能在主线程上执行网络操作。您需要使用类似于
AsyncTask
或其他独立线程的方法。@MisterSquonk,正如我在我的作品中提到的,这是我第一次编写Java代码,在Android SDK中,我不知道如何做到这一点。你有什么好的教程或什么的链接吗?谢谢你的帮助。
<manifest xlmns:android...>
 ...
 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
public void buttonListener(View v) {
   check_login();
}
<Button 
   android:text="Calling From XML Layout"
   android:id="@+id/Button04" android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:onClick="buttonListener">
</Button>