3

サーバーにデータを投稿するための次のコードがあります。

// HTTP Settings
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost postRequest = new HttpPost(
                    "http://myserver.com/Login");
            MultipartEntity reqEntity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);

            // Http Headers
            postRequest.addHeader("Accept", "application/xml");
            postRequest.addHeader("Connection", "keep-alive");

            // Credentials
            reqEntity.addPart("username", new StringBody(ServerData.username));
            reqEntity.addPart("password", new StringBody(ServerData.password));

            if (m_sigFile.exists()) {
                Bitmap m_sig = BitmapFactory.decodeFile(sigFilePath
                        + "m_sig.jpg");
                ByteArrayOutputStream m_bao = new ByteArrayOutputStream();
                m_sig.compress(Bitmap.CompressFormat.JPEG, 90, m_bao);

                byte[] m_ba = m_bao.toByteArray();
                String m_ba1 = Base64.encodeToString(m_ba, 0);
                reqEntity.addPart("m_sig.jpg", new StringBody(m_ba1));
            }

            postRequest.setEntity(reqEntity);
            HttpResponse response = httpClient.execute(postRequest);
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    response.getEntity().getContent(), "UTF-8"));
            String sResponse;
            StringBuilder s = new StringBuilder();

            while ((sResponse = reader.readLine()) != null) {
                s = s.append(sResponse);
            }

コードは完全に機能し、jpeg ファイルを除くすべてのデータがサーバーに送信されます。コンテンツタイプを「image/jpeg」に設定した場合、サーバーはファイルのみを受け入れますが、画像のみを受け入れます。ユーザー名とパスワードは平文である必要があります。これは可能ですか?

4

2 に答える 2

2

これは機能します:

            ContentBody cbFile = new FileBody(new File(myPath
                    + "image_1.jpg"),
                    "image/jpeg");
            reqEntity.addPart("photo1"), cbFile);

ファイルが存在するかどうかを確認することを忘れないでください!

于 2012-11-27T20:47:28.100 に答える
1

StringBodyコンテンツ タイプを受け入れるコンストラクタがあります。

new StringBody(titleString, "application/atom+xml", Charset.forName("UTF-8"));
于 2012-11-26T08:47:04.200 に答える