3

私は自分のウェブサイトでワードプレスを使用しています.xmlファイルの1つで、ユーザーは書籍の価格などのコンテンツを入力する必要があり、ユーザーが投稿ボタンをクリックすると、そのデータをAndroidアプリからウェブサイトに投稿したいと考えています. どうやってやるの。これについて何か情報を提供していただけると大変助かります。以下は私のコードです

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>
4

2 に答える 2

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(....)メソッドを呼び出していないため、取得できませんでした。もう1つ、ファイルをサーバーにアップロードするには、別のコードをここで確認する必要があります。

@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");     

        }
    });

}
于 2012-11-23T11:59:13.777 に答える
0

AndroidからのWebサービス呼び出しを介して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());
}
于 2012-11-24T10:05:39.933 に答える