我在我的网站上使用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>
答案 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());
}