Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 什么';发帖有什么问题?_Android_Httpurlconnection - Fatal编程技术网

Android 什么';发帖有什么问题?

Android 什么';发帖有什么问题?,android,httpurlconnection,Android,Httpurlconnection,我一直在使用HttpUrlConnection发布视频和其他一些参数, 代码运行良好,否则它当然不会发布数据,它能够获取 来自服务器的响应,我似乎无法解决问题。 谢谢你的帮助 class MyAsyncTask extends AsyncTask<String, Void, String> { HttpURLConnection connection = null; DataOutputStream outputStream = null; DataInput

我一直在使用HttpUrlConnection发布视频和其他一些参数, 代码运行良好,否则它当然不会发布数据,它能够获取 来自服务器的响应,我似乎无法解决问题。 谢谢你的帮助

class MyAsyncTask extends AsyncTask<String, Void, String> {
    HttpURLConnection connection = null;
    DataOutputStream outputStream = null;
    DataInputStream inputStream = null;
    String lineEnd = "\r\n";
    String twoHyphens = "--";
    String boundary = "*****";
    ProgressDialog dialog;
    int bytesRead, bytesAvailable, bufferSize;
    byte[] buffer;
    int maxBufferSize = 1 * 1024 * 1024;
    int serverResponseCode = 0;
    String line = null;
    String floatMessage = null;

    @Override
    protected void onPreExecute() {
        dialog = new ProgressDialog(EventsActivity.this);
        dialog.show();
        dialog.setMessage("Uploading Event");
        dialog.setCancelable(false);
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... urls) {
        try {
            FileInputStream fileInputStream = new FileInputStream(new File(videopath));

            URL url = new URL("http://workintelligent.com/TagFrame/webservice/upload_video");
            connection = (HttpURLConnection) url.openConnection();
            // Allow Inputs &amp; Outputs.

            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setUseCaches(false);

            // Set HTTP method to POST.
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Connection", "Keep-Alive");
            connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
            connection.setRequestProperty("video_file", videopath);


            Log.e("getting user_id", userid);
            connection.setRequestProperty("user_id",userid);
            connection.setRequestProperty("access_type  ", "public");
            connection.setRequestProperty("title", "sdfdsf");
            connection.setRequestProperty("description", "sdscfsdf");
            connection.setRequestProperty("tags_keywords", "asdf");
            connection.setRequestProperty("price", "0");
            connection.setRequestProperty("is_paid", "0");

            outputStream = new DataOutputStream(connection.getOutputStream());
            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
            outputStream.writeBytes("Content-Disposition: form-data; name=\"video_file\";filename=\"" + videopath + "\"" + lineEnd);
            outputStream.writeBytes(lineEnd);

            bytesAvailable = fileInputStream.available();
            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            buffer = new byte[bufferSize];

            // Read file
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);

            while (bytesRead > 0) {
                outputStream.write(buffer, 0, bufferSize);
                bytesAvailable = fileInputStream.available();
                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                bytesRead = fileInputStream.read(buffer, 0, bufferSize);
            }

            outputStream.writeBytes(lineEnd);
            outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);



            connection.setRequestMethod("GET");
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            StringBuilder stringBuilder = new StringBuilder();
            fileInputStream.close();
            while ((line = bufferedReader.readLine()) != null) {
                stringBuilder.append(line + '\n');
            }

            String jsonString = stringBuilder.toString();
            Log.e("jsonString", jsonString);
            JSONObject resJson = new JSONObject(jsonString);
            String floatMessage = resJson.getString("upload");
            Log.e("floatMessage", floatMessage);
            outputStream.flush();
            outputStream.close();
        } catch (Exception ex) {
        }
        return floatMessage;
    }

    protected void onPostExecute(String result) {
        dialog.cancel();
        super.onPostExecute(result);
        Toast.makeText(EventsActivity.this, floatMessage, Toast.LENGTH_LONG).show();

    }
}
类MyAsyncTask扩展了AsyncTask{ HttpURLConnection=null; DataOutputStream outputStream=null; DataInputStream inputStream=null; 字符串lineEnd=“\r\n”; 字符串双连字符=“--”; 字符串边界=“*******”; 进程对话; int字节读取,字节可用,缓冲区大小; 字节[]缓冲区; int maxBufferSize=1*1024*1024; int serverResponseCode=0; 字符串行=null; 字符串floatMessage=null; @凌驾 受保护的void onPreExecute(){ dialog=新建ProgressDialog(EventsActivity.this); dialog.show(); setMessage(“上传事件”); 对话框。可设置可取消(false); super.onPreExecute(); } @凌驾 受保护的字符串doInBackground(字符串…URL){ 试一试{ FileInputStream FileInputStream=新的FileInputStream(新文件(视频路径)); URL=新URL(“http://workintelligent.com/TagFrame/webservice/upload_video"); connection=(HttpURLConnection)url.openConnection(); //允许输入和输出。 connection.setDoOutput(真); connection.setDoInput(true); connection.setUseCaches(false); //将HTTP方法设置为POST。 connection.setRequestMethod(“POST”); setRequestProperty(“连接”,“保持活动”); connection.setRequestProperty(“内容类型”、“多部分/表单数据;边界=“+boundary”); setRequestProperty(“视频文件”,videopath); Log.e(“获取用户id”,userid); setRequestProperty(“用户id”,userid); setRequestProperty(“访问类型”、“公共”); setRequestProperty(“标题”、“sdfdsf”); setRequestProperty(“描述”、“sdscfsdf”); setRequestProperty(“tags_关键字”、“asdf”); connection.setRequestProperty(“价格”、“0”); connection.setRequestProperty(“已支付”、“0”); outputStream=新的DataOutputStream(connection.getOutputStream()); outputStream.writeBytes(两个连字符+边界+行结束); outputStream.writeBytes(“内容配置:表单数据;名称=\”视频文件\“文件名=\”+视频路径+“\”+行结束”); outputStream.writeBytes(lineEnd); bytesAvailable=fileInputStream.available(); bufferSize=Math.min(字节可用,maxBufferSize); buffer=新字节[bufferSize]; //读取文件 bytesRead=fileInputStream.read(缓冲区,0,缓冲区大小); 而(字节读取>0){ 写入(缓冲区,0,缓冲区大小); bytesAvailable=fileInputStream.available(); bufferSize=Math.min(字节可用,maxBufferSize); bytesRead=fileInputStream.read(缓冲区,0,缓冲区大小); } outputStream.writeBytes(lineEnd); outputStream.writeBytes(两个连字符+边界+两个连字符+lineEnd); connection.setRequestMethod(“GET”); BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(connection.getInputStream()); StringBuilder StringBuilder=新的StringBuilder(); fileInputStream.close(); 而((line=bufferedReader.readLine())!=null){ 追加(行+'\n'); } 字符串jsonString=stringBuilder.toString(); Log.e(“jsonString”,jsonString); JSONObject resJson=新的JSONObject(jsonString); String floatMessage=resJson.getString(“上传”); Log.e(“floatMessage”,floatMessage); outputStream.flush(); outputStream.close(); }捕获(例外情况除外){ } 返回消息; } 受保护的void onPostExecute(字符串结果){ dialog.cancel(); super.onPostExecute(结果); Toast.makeText(EventsActivity.this、floatMessage、Toast.LENGTH_LONG.show(); } }
我从服务器上得到的响应是json格式的,只是一个验证(status=“error”),如果参数没有发布,它会被触发。好的,我自己做了一些研究,发现了这个:“这是最完整的答案。”。我实现了它,效果很好。