做了一个小程序,需要给服务器上传文件,服务器已搭建好,从本地上传文件没有问题,找了个上传文件的教程,但是弄好后报错,如下,求解~~
        就这个一个MainActivity,主文件引用的包是github下载的 android-async-http-1.4.3.jar 和 android-async-http-1.4.8.jar 试过都报这个错,找不到class,我用的是ec,没用as,难道不适用于ec吗?百度不到,也看不出什么端倪了


package com.example.testfileupload;import java.io.File;
import java.io.FileNotFoundException;import org.apache.http.Header;import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends Activity { EditText editText;
Button button; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.editText1);
button = (Button) findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) { String path = editText.getText().toString().trim();
File file = new File(path);
System.out.println("path:"+path);
if (file.exists() && file.length() > 0) {
AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
RequestParams params = new RequestParams();
try {
params.put("file", file);
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
asyncHttpClient
.post("http://**.**.**.**:8080/eMark_uploadServer/eMark_Servlet",
params, new AsyncHttpResponseHandler() {

@Override
public void onFailure(int arg0,
Header[] arg1, byte[] arg2,
Throwable arg3) {
System.out.println("Failure");
Toast.makeText(MainActivity.this, "Failure", 0)
.show();
} @Override
public void onSuccess(int arg0,
Header[] arg1, byte[] arg2) {
System.out.println("Success");
Toast.makeText(MainActivity.this, "Success", 0)
.show();
}
});
} else {
Toast.makeText(MainActivity.this, "file not exist", 0)
.show();
}
}
});
}
}如果有其他好方式的话,希望可以借鉴下,或者加我qq:348536463,指点一二,非常感谢!

解决方案 »

  1.   

    你搜okhttp3上传文件嘛,大把的教程
      

  2.   

    params.put("file", file);  这同样是传不上去的。
    要用apache 的 下的包
    import org.apache.http.entity.mime.MultipartEntity;
    import org.apache.http.entity.mime.content.FileBody;
    自己百度有教程
      

  3.   

    换了okhttp3,还是有问题,不知道是不是兼容性问题,okhttp-3.2.0.jar 和 okio-1.14.0.jar ,主要问题在这里   “无法解析类型 okio.ByteString。从必需的 .class 文件间接引用了它”我换了其他的方式,依然  “无法解析类型 okio.ByteString。从必需的 .class 文件间接引用了它”jdk1.8换成1.6,这个报错依然存在