5

StringEntity を使用して json オブジェクトを投稿できます

httppost.setEntity(newStringEntity(obj.toString())); HttpResponse 応答 = httpclient.execute(httppost);

しかし、jsonデータとともにファイルを投稿する必要があります.MultipartEntityを使用した多くの回答を見つけましたが、廃止されました.MultipartEntityBuilderを使用するチュートリアルまたはサンプルコードを提案してください
.

Thread t = new Thread(new Runnable() {

@Override
public void run() {

JSONObject jsonobject = null;

String requestURL = "URL";

try {

jsonobject = new JSONObject("{\"first\": \"Test\",\"last\": \"User\",\"name\": \"Test 
User\",\"email\": \"tr0121345899@gmail.com\",\"birthdate\": \"1984-01-01\",\"Account\": {\"username\": \"t1r0123425899\",\"password\": \"testuser1234567899\"},\"Address\": {\"postal_code\": \"11230\",\"state_or_province\": \"NY\",\"country\": \"US\"}}");
                } catch (JSONException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }



HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost(requestURL);

httppost.addHeader("Content-Type", "application/json");

httppost.addHeader("X-ConsumerApiClient","0f8f0a024d6344e429f5ee96aa66fbfb5c3973b5");

httppost.addHeader("X-ConsumerApiSignature",

                    "qmt8aEAGRQUvldkDnHw8zgn1kRYuXRDwvmo3TpWlCtE=");

MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
                multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

multipartEntity.addPart("file", new FileBody(new
                 File(fileName)));
multipartEntity.addPart("Person", jsonobject.toString());

httppost.setEntity(multipartEntity.build());


try {

     HttpResponse response = httpclient.execute(httppost);

     Log.d("status", "" + response.getStatusLine());

     Log.d("response",EntityUtils.toString(response.getEntity()));

    } catch (ClientProtocolException e) {

    } catch (IOException e) {


}
}
});

t.start();
4

3 に答える 3

0

これをやってみてください。

multipartEntity.addBinaryBody("file", file, ContentType.create("application/octet-stream"), file.getName());
multipartEntity.addTextBody("json", jsonobject.toString(),  ContentType.DEFAULT_BINARY);

httppost.setEntity(multipartEntity.build());
于 2016-07-20T06:08:29.227 に答える
0

スレッドで同期的に使用できるhttp://loopj.com/android-async-http/を使用して同様のことを行いました

于 2014-02-11T10:31:30.350 に答える