如何解决 java.net.Connect异常:无法连接到 /10.0.2.2(端口 8080):连接失败:ETIMED



我正在制作一个应用程序,该应用程序应该将文件从SD卡上传到php服务器以进行进一步处理,但是当我尝试上传我的logcat时显示以下错误:java.net.ConnectException:无法连接到/10.0.2.2(端口8080):连接失败:ETIMEDOUT(连接超时)。我的 java 代码如下。

package de.smsbackup;
import android.R;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.StrictMode;
import android.util.Log;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import de.smsbackup.SMSList;
@SuppressWarnings("unused")
public class Uploader extends Activity {
private String Tag = "UPLOADER";
private String urlString = "http://10.0.2.2:8080/admin/admin/uploadtest.php";
HttpURLConnection conn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.upload_sms_file);
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()  
    .detectDiskReads()  
    .detectDiskWrites()  
    .detectNetwork()   // or .detectAll() for all detectable problems  
    .penaltyLog()  
    .build());  
   StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()  
    .detectLeakedSqlLiteObjects()  
    .detectLeakedClosableObjects()  
    .penaltyLog()  
    .penaltyDeath()  
    .build()); 
    String exsistingFileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/SMSBackup.txt";
    String lineEnd = "rn";
    String twoHyphens = "--";
    String boundary = "*****";
    try {
        // ------------------ CLIENT REQUEST
        Log.e(Tag, "Inside second Method");
        FileInputStream fileInputStream = new FileInputStream(new File(
                exsistingFileName));
        // open a URL connection to the Servlet
        URL url = new URL(urlString);
        // Open a HTTP connection to the URL
        conn = (HttpURLConnection) url.openConnection();
        // Allow Inputs
        conn.setDoInput(true);
        // Allow Outputs
        conn.setDoOutput(true);
        // Don't use a cached copy.
        conn.setUseCaches(false);
        // Use a post method.
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Connection", "Keep-Alive");
        conn.setRequestProperty("Content-Type",
                "multipart/form-data;boundary=" + boundary);
        DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
        dos.writeBytes(twoHyphens + boundary + lineEnd);
        dos.writeBytes("Content-Disposition: post-data; name=uploadedfile;filename="
                        + exsistingFileName + "" + lineEnd);
        dos.writeBytes(lineEnd);
        Log.e(Tag, "Headers are written");
        // create a buffer of maximum size
        int bytesAvailable = fileInputStream.available();
        int maxBufferSize = 1000;
        // int bufferSize = Math.min(bytesAvailable, maxBufferSize);
        byte[] buffer = new byte[bytesAvailable];
        // read file and write it into form...
        int bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
        while (bytesRead > 0) {
            dos.write(buffer, 0, bytesAvailable);
            bytesAvailable = fileInputStream.available();
            bytesAvailable = Math.min(bytesAvailable, maxBufferSize);
            bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
        }
        // send multipart form data necesssary after file data...
        dos.writeBytes(lineEnd);
        dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
        // close streams
        Log.e(Tag, "File is written");
        fileInputStream.close();
        dos.flush();
        dos.close();
    } catch (MalformedURLException ex) {
        Log.e(Tag, "error: " + ex.getMessage(), ex);
    }
    catch (IOException ioe) {
        Log.e(Tag, "error: " + ioe.getMessage(), ioe);
    }

    try {
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn
                .getInputStream()));
        String line;
        while ((line = rd.readLine()) != null) {
            Log.e("Dialoge Box", "Message: " + line);
        }
        rd.close();
    } catch (IOException ioex) {
        Log.e("Note Pad", "error: " + ioex.getMessage(), ioex);
    }
}
}

我的PHP文件如下:

<?php
// Where the file is going to be placed 
 $target_path = "admin/";
 /* Add the original filename to our target path.  
  Result is "uploads/filename.extension" */
 $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 
 if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
  echo "The file ".  basename( $_FILES['uploadedfile']['name']). 
  " has been uploaded";
  chmod ("uploads/".basename( $_FILES['uploadedfile']['name']), 0644);
} else{
 echo "There was an error uploading the file, please try again!";
 echo "filename: " .  basename( $_FILES['uploadedfile']['name']);
 echo "target_path: " .$target_path;
}
?>

请谁能尽快告诉我我错在哪里?谢谢。

我认为这是因为您处理IP。尝试使用域名。

最新更新