android一次获得多个响应

时间:2016-12-21 11:08:16

标签: android server

我正在尝试发送包含一些文本字段和图像的表单。我希望将所有这些数据发送到一个URL。我学会了发送文本,后来我学会了发送图像。

现在问题是我将表单数据发送到服务器。多个请求分别发送,一个用于文本字段,另一个用于图像字段。有人可以告诉我如何通过一个请求发送这些文本和图像吗?

这是我发送文字的代码:

@Override
public void onClick(View v) {
    if(isConnected()) {
        feedbackName = (EditText)findViewById(R.id.feedback_name);
        feedbackEmail = (EditText)findViewById(R.id.feedback_email);
        String email=feedbackEmail.getText().toString().trim();
        String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
        feedbackComment = (EditText)findViewById(R.id.feedback_comment);

        String name = feedbackName.getText().toString();

        String comment = feedbackComment.getText().toString();
        if ((name.matches("")) || (name.matches("")) || (email.matches("")) || (comment.matches(""))) {

            Toast.makeText(getApplicationContext(), "Please fill up all the fields", Toast.LENGTH_LONG).show();

        } else {
            if (email.matches(emailPattern)) {
                new HttpAsyncTask().execute("http://myeducationhunt.com/api/v1/post-feedback");
            } else Toast.makeText(getApplicationContext(),"Invalid Email Address",Toast.LENGTH_LONG).show();
        }
    }
    else {

        Toast.makeText(getApplicationContext(), "Please check your internet connection", Toast.LENGTH_LONG).show();
    }

}             

public static String POST(String url, feedbackData feedbackData){
    InputStream inputStream = null;
    String result = "";
    try {
        HttpClient httpclient = new DefaultHttpClient();

        HttpPost httpPost = new HttpPost(url);

        String json = "";

        JSONObject jsonObject = new JSONObject();
        jsonObject.accumulate("name", feedbackData.getName());
        jsonObject.accumulate("email", feedbackData.getEmail());
        jsonObject.accumulate("comment", feedbackData.getComment());

        json = jsonObject.toString();

        StringEntity se = new StringEntity(json);

        httpPost.setEntity(se);

        httpPost.setHeader("Accept", "application/json");
        httpPost.setHeader("Content-type", "application/json");

        HttpResponse httpResponse = httpclient.execute(httpPost);

        inputStream = httpResponse.getEntity().getContent();

        if(inputStream != null)
            result = convertInputStreamToString(inputStream);
        else
            result = "Did not work!";

    } catch (Exception e) {
        Log.d("InputStream", e.getLocalizedMessage());
    }
    return result;
}

private class HttpAsyncTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {

        feedbackData feedbackData = new feedbackData();
        feedbackData.setName(feedbackName.getText().toString());
        feedbackData.setEmail(feedbackEmail.getText().toString());
        feedbackData.setComment(feedbackComment.getText().toString());

        return POST(urls[0],feedbackData);
    }
    @Override
    protected void onPostExecute(String result) {
        Toast.makeText(getBaseContext(), "Feedback send successfully", Toast.LENGTH_LONG).show();
    }
}

private static String convertInputStreamToString(InputStream inputStream) throws IOException {
    BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
    String line = "";
    String result = "";
    while((line = bufferedReader.readLine()) != null)
        result += line;

    inputStream.close();
    return result;
}

这是我用来将图像发送到服务器的代码:

private class UploadImage extends AsyncTask<Void,Void, Void> {

    Bitmap image;
    String name;
    public UploadImage(Bitmap image,String name){
        this.image=image;
        this.name=name;

    }
    @Override
    protected Void doInBackground(Void... params) {
        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
        image.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);
        String encodedImage= Base64.encodeToString(byteArrayOutputStream.toByteArray(),Base64.DEFAULT);

        ArrayList<NameValuePair> dataToSend=new ArrayList<>();
        dataToSend.add(new BasicNameValuePair("image",encodedImage));
        dataToSend.add(new BasicNameValuePair("name",name));

        HttpParams httpRequestParams=getHttpRequestParams();

        HttpClient client=new DefaultHttpClient(httpRequestParams);
        HttpPost post=new HttpPost(SERVER_ADDRESS);

        try{

            post.setEntity(new UrlEncodedFormEntity(dataToSend));
            client.execute(post);
        }catch (Exception e){
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        Toast.makeText(getApplicationContext(),"Image Uploaded",Toast.LENGTH_LONG).show();
    }



}

0 个答案:

没有答案