2014-12-19 36 views
0
/** 
* Uploading the file to server 
* */ 
private class UploadFileToServer extends AsyncTask<Void, Integer, String> { 
    @Override 
    protected void onPreExecute() { 
     // setting progress bar to zero 
     progressBar.setProgress(0); 
     super.onPreExecute(); 
    } 

    @Override 
    protected void onProgressUpdate(Integer... progress) { 
     // Making progress bar visible 
     progressBar.setVisibility(View.VISIBLE); 

     // updating progress bar value 
     progressBar.setProgress(progress[0]); 

     // updating percentage value 
     txtPercentage.setText(String.valueOf(progress[0]) + "%"); 
    } 

    @Override 
    protected String doInBackground(Void... params) { 
     return uploadFile(); 
    } 

    @SuppressWarnings("deprecation") 
    private String uploadFile() { 
     String responseString = null; 

     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(“http://www.example.com/example/fileUpload.php”);//example site 

     try { 
      AndroidMultiPartEntity entity = new AndroidMultiPartEntity(
        new ProgressListener() { 

         @Override 
         public void transferred(long num) { 
          publishProgress((int) ((num/(float) totalSize) * 100)); 
         } 
        }); 

      File sourceFile = new File(filePath); 

      // Adding file data to http body 
      entity.addPart("image", new FileBody(sourceFile)); 

      // Extra parameters if you want to pass to server 
      entity.addPart("website", 
        new StringBody("www.androidhive.info")); 
      entity.addPart("email", new StringBody("[email protected]")); 

      totalSize = entity.getContentLength(); 
      httppost.setEntity(entity); 

      // Making server call 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity r_entity = response.getEntity(); 

      int statusCode = response.getStatusLine().getStatusCode(); 
      if (statusCode == 200) { 
       // Server response 
       responseString = EntityUtils.toString(r_entity); 
      } else { 
       responseString = "Error occurred! Http Status Code: " 
         + statusCode; 
      } 

     } catch (ClientProtocolException e) { 
      responseString = e.toString(); 
     } catch (IOException e) { 
      responseString = e.toString(); 
     } 

     return responseString; 

    } 

    @Override 
    protected void onPostExecute(String result) { 
     Log.e(TAG, "Response from server: " + result); 

     // showing the server response in an alert dialog 
     showAlert(result); 

     super.onPostExecute(result); 
    } 

} 

/** 
* Method to show alert dialog 
* */ 
private void showAlert(String message) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage(message).setTitle("Response from Servers") 
      .setCancelable(false) 
      .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        // do nothing 
       } 
      }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
} 

PHP代码服务器fileUpload.php文件没有上传到服务器由于类HTTPResponse

<?php 

// Path to move uploaded files 
$target_path = "uploads/"; 

// array for final json respone 
$response = array(); 

// getting server ip address 
$server_ip = gethostbyname(gethostname()); 

// final file url that is being uploaded 
$file_upload_url = 'http://' . $server_ip . '/' . 'AndroidFileUpload' . '/' . $target_path; 


if (isset($_FILES['image']['name'])) { 
    $target_path = $target_path . basename($_FILES['image']['name']); 

    // reading other post parameters 
    $email = isset($_POST['email']) ? $_POST['email'] : ''; 
    $website = isset($_POST['website']) ? $_POST['website'] : ''; 

    $response['file_name'] = basename($_FILES['image']['name']); 
    $response['email'] = $email; 
    $response['website'] = $website; 

    try { 
     // Throws exception incase file is not being moved 
     if (!move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) { 
      // make error flag true 
      $response['error'] = true; 
      $response['message'] = 'Could not move the file!'; 
     } 

     // File successfully uploaded 
     $response['message'] = 'File uploaded successfully!'; 
     $response['error'] = false; 
     $response['file_path'] = $file_upload_url . basename($_FILES['image']['name']); 
    } catch (Exception $e) { 
     // Exception occurred. Make error flag true 
     $response['error'] = true; 
     $response['message'] = $e->getMessage(); 
    } 
} else { 
    // File parameter is missing 
    $response['error'] = true; 
    $response['message'] = 'Not received any file!F'; 
} 

// Echo final json response to client 
echo json_encode($response); 
?> 

以上代码响应客户端以下错误:

的HttpResponse没有响应。异常来作为org.apache.http.NoHttpResponseException:目标服务器无法响应。 HttpResponse response = httpclient.execute(httppost);

+0

PHP服务器在线?有一些HTTP头嗅探(通过htaccess)拒绝呼叫? – 2014-12-19 11:28:48

+0

是的php服务器是在线的。米没有得到这一点“是否有一些http头嗅探(通过htaccess)拒绝呼叫?” – krutssss 2014-12-19 11:36:02

+0

你在php web服务器上设置了一个.htaccess吗? – 2014-12-19 11:37:01

回答

1

请试试这个代码:

// Making server call 
    HttpResponse response = httpclient.execute(httppost); 
    HttpEntity r_entity = response.getEntity(); 

    int statusCode = response.getStatusLine().getStatusCode(); 
    if (statusCode == 200) { 
    // Server response 
    responseString = EntityUtils.toString(r_entity); 
} else { 
    responseString = "Error occurred! Http Status Code: " 
    + statusCode; 
} 

} catch (ClientProtocolException e) { 
    responseString = e.toString(); 
} catch (IOException e) { 
    responseString = e.toString(); 
}