0

HttpPostセキュリティのために持っているを変更しました。

アプリを読み込んで写真を撮ることはできますが、API が別の取得方法を使用しているため、API と通信できません。

マルチパートコーディングの例はありますが、これを実装する方法がわかりません。私がやっていること/私がしなければならないことの例は、ここにあります。

マルチパートフォームデータを使用して実装するにはどうすればよいですか?

 protected Object doInBackground(Object... arg0) {
    Bitmap bitmapOrg = ((Main) parentActivity).mPhoto;
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    // compress bitmap into the byte array output stream
    bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 75, baos);
    // form byte array out of byte array output stream
    byte[] ba = baos.toByteArray();
    String encodedImage = Base64.encodeBytes(ba);
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(
            "-----------------------------------");
    // Add your data


    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
        nameValuePairs.add(new BasicNameValuePair("image", encodedImage));
    try {
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        InputStream inputstream = entity.getContent();
        StringBuilder sb = new StringBuilder();
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(inputstream));
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        results = sb.toString();

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return null;
}
4

1 に答える 1

0

まず、マルチパート方式を使用して変換することから始めなければなりません。

    Bitmap bitmapOrg = ((Main) parentActivity).mPhoto;
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    // compress bitmap into the byte array output stream
    bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 75, baos);
    // form byte array out of byte array output stream
    byte[] ba = baos.toByteArray();
    String encodedImage = Base64.encodeBytes(ba);
    HttpClient httpclient = new DefaultHttpClient();

これは、実際には stackoverflow にあり、Post multipart request with Android SDKに移動することで、マルチパートがどのように機能するかの主要な例とサンプルを提供します。

HttpPost httppost = new HttpPost("some url");

    MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);  
    multipartEntity.addPart("Title", new StringBody("Title"));
    multipartEntity.addPart("Nick", new StringBody("Nick"));
    multipartEntity.addPart("Email", new StringBody("Email"));
    multipartEntity.addPart("Description", new StringBody(Settings.SHARE.TEXT));
    multipartEntity.addPart("Image", new FileBody(image));
    httppost.setEntity(multipartEntity);

    mHttpClient.execute(httppost, new PhotoUploadResponseHandler());
于 2013-11-01T23:25:26.850 に答える