点击发布后用户点击发布按钮,如何从APP发布到网站

时间:2012-11-23 11:46:47

标签: android wordpress

我在我的网站上使用wordpress。在我的一个xml文件中,用户必须填写书籍价格等内容,然后我想在用户点击帖子按钮时将这些数据从Android App发布到网站。我怎样才能做到这一点。如果您提供有关此信息的任何信息,将会非常有帮助。以下是我的代码

public class Post_Ads extends Activity {
private static final int SELECT_PHOTO = 100;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_post__ads);

    // do action when click on browse button
    Button button = (Button) findViewById(R.id.browse_btn);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click
             Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
             photoPickerIntent.setType("image/*");
             startActivityForResult(photoPickerIntent, SELECT_PHOTO);   

        }
    });
    Button btnpost = (Button) findViewById(R.id.post_btn);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click


        }
    });

}
// select photo from phone gallery 
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    switch(requestCode) { 
    case SELECT_PHOTO:
        if(resultCode == RESULT_OK){  
            Uri selectedImage = imageReturnedIntent.getData();
            InputStream imageStream;
            try {
                imageStream = getContentResolver().openInputStream(selectedImage);
                 Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }

}
public void postData(String title, String price, String city, String state, String country,String zip, String description, String image) {

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("site url");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        nameValuePairs.add(new BasicNameValuePair("Title", title));
        nameValuePairs.add(new BasicNameValuePair("price", price));
        nameValuePairs.add(new BasicNameValuePair("City", city));
        nameValuePairs.add(new BasicNameValuePair("State", state));
        nameValuePairs.add(new BasicNameValuePair("Country", country));
        nameValuePairs.add(new BasicNameValuePair("Zip/Postal Code", zip));
        nameValuePairs.add(new BasicNameValuePair("Description", description));
        nameValuePairs.add(new BasicNameValuePair("Image", image));
        // 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
    }

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


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:

            return true;
    }
    return super.onOptionsItemSelected(item);
}

}

activity_post_ads.xml文件

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:orientation="vertical" >


<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top|left"
    android:text="@string/PostYourAds" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="" />
  <LinearLayout  android:layout_width="wrap_content"        android:layout_height="fill_parent" >
 <TextView
android:id="@+id/title"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:text="@string/Title" />
  <EditText
 android:id="@+id/title1"
 android:layout_width="210dp"
 android:layout_height="wrap_content"
 android:gravity="left"
 android:hint="@string/none" >
   <requestFocus />
    </EditText>
      </LinearLayout>
   <LinearLayout  android:layout_width="wrap_content" android:layout_height="fill_parent" >
     <TextView
      android:id="@+id/price"
      android:layout_width="67dp"
      android:layout_height="wrap_content"
      android:text="@string/price" />
  <EditText
 android:id="@+id/price1"
 android:layout_width="210dp"
 android:layout_height="wrap_content"
 android:ems="10"
 android:hint="@string/none"
 android:inputType="number" >
     <requestFocus />
 </EditText>
   </LinearLayout>

          

    <requestFocus />
 </EditText>
 </LinearLayout>

  <LinearLayout  android:layout_width="wrap_content" android:layout_height="fill_parent" >
<TextView
android:id="@+id/state"
android:layout_width="68dp"
android:layout_height="wrap_content"
android:text="@string/state" />

 <EditText
 android:id="@+id/state1"
android:layout_width="210dp"
 android:layout_height="wrap_content"
 android:ems="10"
 android:hint="@string/none" >

   <requestFocus />
  </EditText>
  </LinearLayout>

<LinearLayout  android:layout_width="wrap_content" android:layout_height="fill_parent" >
     <TextView
      android:id="@+id/zip"
      android:layout_width="73dp"
      android:layout_height="match_parent"
      android:text="@string/zip" />
 <EditText
 android:id="@+id/zip1"
 android:layout_width="210dp"
 android:layout_height="wrap_content"
 android:layout_weight="1"
 android:ems="10"
 android:inputType="number"
 android:hint="@string/none">

 <requestFocus />
</EditText>
  </LinearLayout>

<LinearLayout  android:layout_width="wrap_content" android:layout_height="fill_parent"  >
 <TextView
android:id="@+id/description"
android:layout_width="88dp"
android:layout_height="30dp"
android:text="@string/description" />
 <EditText
  android:id="@+id/editText1"
  android:layout_width="210dp"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:ems="10"
  android:hint="@string/none"
  android:inputType="textMultiLine" />
    </LinearLayout>

 <LinearLayout  android:layout_width="wrap_content" android:layout_height="fill_parent" >
    <TextView
      android:id="@+id/Image"
      android:layout_width="73dp"
      android:layout_height="33dp"
      android:text="@string/image" />
<EditText
 android:id="@+id/image1"
 android:layout_width="134dp"
 android:layout_height="wrap_content"
 android:ems="10"
 android:hint="@string/none" >

 <requestFocus />
 </EditText>

 <Button
 android:id="@+id/browse_btn"
 style="?android:attr/buttonStyleSmall"
 android:layout_width="71dp"
 android:layout_height="wrap_content"
 android:text="@string/browse_btn" />
 </LinearLayout>

 <Button
  android:id="@+id/post_btn"
  android:layout_width="100dp"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  android:text="@string/post"
  android:onClick="postData()" />

 </LinearLayout>

2 个答案:

答案 0 :(得分:1)

首先要了解HTTP类。从Android应用程序向服务器发布数据的示例代码如下所示。

public void postData(String bookname, String price) {

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("your site url");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        nameValuePairs.add(new BasicNameValuePair("book", bookname));
        nameValuePairs.add(new BasicNameValuePair("price", price));
        // 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
    }

}

所以List<NameValuePair> nameValuePairs将保存应通过POST方法发送到服务器的数据。传递你的价值如下。

nameValuePairs.add(new BasicNameValuePair("book", bookname));
nameValuePairs.add(new BasicNameValuePair("price", price));

基本上,当点击按钮时,应该调用上面的函数,

     postbutton.setOnClickListener(new OnClickListener() {  
         public void onClick(View v)
         {
            // call postData here.
         }
     });

确保您已在网站上设置了所有内容以处理这些请求。请注意,对于某些较新或较新的Android版本,您需要AsyncTask才能执行网络操作。

编辑:将您的oncreate方法更改为以下代码。你没有调用postData(....)方法。这就是你没有得到的原因。还有一件事,要将文件上传到服务器,您需要使用不同的代码here,您将会有所了解。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_post__ads);

    // do action when click on browse button
    Button button = (Button) findViewById(R.id.browse_btn);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click
             Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
             photoPickerIntent.setType("image/*");
             startActivityForResult(photoPickerIntent, SELECT_PHOTO);   

        }
    });
    Button btnpost = (Button) findViewById(R.id.post_btn);
    btnpost.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click
             postData("title","price", "city", "state","country","zip", "description",     "image");     

        }
    });

}

答案 1 :(得分:0)

您可以通过来自android的webservice调用向wbsite发送值。使用POST或GET方法。 这是通过HttpPost方法发送数据的代码,

String url              = "your_webservice_URL";

 try 
 {
    HttpPost loginHttpPost   = new HttpPost(url); 
    HttpContext localContext = new BasicHttpContext();          

    MultipartEntity multipartContent = new MultipartEntity();
    multipartContent.addPart("parameter1", new StringBody(value1));
    multipartContent.addPart("parameter2", new StringBody(value2));
    loginHttpPost.setEntity(multipartContent);

    HttpClient objHttpClient = new DefaultHttpClient();
    HttpResponse response = objHttpClient.execute(loginHttpPost,localContext);
 } 
 catch (IOException e) {
     e.printStackTrace();
 }

以下是通过HttpGet方法发送数据的代码,

String webserviceurl                    = "your_webservice_URL";

List<NameValuePair> lstAddToken         = new ArrayList<NameValuePair>();
lstAddToken.add(new BasicNameValuePair("parameter1",value1));
lstAddToken.add(new BasicNameValuePair("parameter2",value2));

//add parameters to the URL
webserviceurl                           += "?";
String paramString                      = URLEncodedUtils.format(lstAddToken, "utf-8");
webserviceurl                           += paramString;

//Call the webservice using HttpGet with parameters and get the response from webservice 
try 
{
    HttpGet loginHttpget     = new HttpGet(webserviceurl);
    HttpClient objHttpClient = new DefaultHttpClient();
    HttpResponse response    = objHttpClient.execute(loginHttpget);
    HttpEntity entity    = response.getEntity();
    is           = entity.getContent();
} 
catch (Throwable t) 
{
     Log.e("log_tag", "Error converting result "+t.toString());
}