Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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
Java HttpURLconnection连续返回错误-Android_Java_Android_Httpurlconnection - Fatal编程技术网

Java HttpURLconnection连续返回错误-Android

Java HttpURLconnection连续返回错误-Android,java,android,httpurlconnection,Java,Android,Httpurlconnection,您好,我正在尝试发布一个简单的json对象,并使用Httpurlconnection获得结果。我试过了,但没有得到任何错误或响应。谁能帮我修一下吗。tnx 请求外部资源类 JSon对象 更新了课程 package sathyabamanan.com.duoproject.comman; import android.content.Context; import android.os.AsyncTask; import java.io.BufferedReader; import java.

您好,我正在尝试发布一个简单的json对象,并使用Httpurlconnection获得结果。我试过了,但没有得到任何错误或响应。谁能帮我修一下吗。tnx

请求外部资源类

JSon对象

更新了课程

package sathyabamanan.com.duoproject.comman;

import android.content.Context;
import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

/**
 * Created by baman on 6/25/17.
 */

  public class RequestExternalResouce extends AsyncTask<String, Void, String> {

    private Context mContext;
    private OnTaskDoneListener onTaskDoneListener;
    private String urlStr = "";
    private String  requestBody = "";

    public RequestExternalResouce(Context context, String url, String body, OnTaskDoneListener onTaskDoneListener) {
        this.mContext = context;
        this.urlStr = url;
        this.requestBody= body;
        this.onTaskDoneListener = onTaskDoneListener;
    }

    @Override
    protected String doInBackground(String... params) {
        try {
            URL mUrl = new URL(urlStr);
            HttpURLConnection httpConnection = (HttpURLConnection) mUrl.openConnection();
            httpConnection.setRequestMethod("POST");
            httpConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            httpConnection.setUseCaches(false);
            httpConnection.setAllowUserInteraction(false);
            httpConnection.setConnectTimeout(1000000);
            httpConnection.setReadTimeout(1000000);
            httpConnection.setDoOutput(true);


            DataOutputStream localDataOutputStream = new DataOutputStream(httpConnection.getOutputStream());
            localDataOutputStream.writeBytes(requestBody.toString());
            localDataOutputStream.flush();
            localDataOutputStream.close();


            int responseCode = httpConnection.getResponseCode();
            httpConnection.connect();

            BufferedReader br = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }
            br.close();



            if (responseCode == HttpURLConnection.HTTP_OK) {
                return sb.toString();
            }

        } catch (IOException e) { e.printStackTrace();
        } catch (Exception ex) { ex.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        if (onTaskDoneListener != null && s != null) {
            onTaskDoneListener.onTaskDone(s);
        } else
            onTaskDoneListener.onError();
    }


    public interface OnTaskDoneListener {
        void onTaskDone(String responseData);
        void onError();
    }

}

tnx。但是现在得到了java.net.ProtocolException:在读取响应后无法写入请求体,但现在我修复了它。tnx
public void sendLloginRequest(View v){
    login_email = email.getText().toString();
    login_password =  password.getText().toString();
    String getLoginUrl = getRequestBody();
    new RequestExternalResouce(context, new Utility().getLoginUrl(), getLoginUrl, new RequestExternalResouce.OnTaskDoneListener() {
        @Override
        public void onTaskDone(String responseData) {
            System.out.println("Success :  in activity"+ responseData);
        }

        @Override
        public void onError() {
            System.out.println("Error :  ");
        }
    }).execute();
}


public String getRequestBody(){
    JSONObject requestBody = new JSONObject();


   JSONArray scopeArray = new JSONArray();
        try {
            scopeArray.put("all_all");
            requestBody.put("userName", login_email);
            requestBody.put("password", login_password);
            requestBody.put("scope", scopeArray);
            requestBody.put("console", "AGENT_CONSOLE");
            requestBody.put("clientID", "e8ea7bb0-5026-11e7-a69b-b153a7c332b9");
        } catch (JSONException e1) {
            e1.printStackTrace();
        }

        return requestBody.toString();
    }
{
    "userName": "sathya@gmail.com",
    "password": "AD123",
    "scope": [
        "all_all"
    ],
    "console": "AGENT_CONSOLE",
    "clientID": "e8ea7bb0-5026-11e7-a69b-b153a7c332b9"
}
package sathyabamanan.com.duoproject.comman;

import android.content.Context;
import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

/**
 * Created by baman on 6/25/17.
 */

  public class RequestExternalResouce extends AsyncTask<String, Void, String> {

    private Context mContext;
    private OnTaskDoneListener onTaskDoneListener;
    private String urlStr = "";
    private String  requestBody = "";

    public RequestExternalResouce(Context context, String url, String body, OnTaskDoneListener onTaskDoneListener) {
        this.mContext = context;
        this.urlStr = url;
        this.requestBody= body;
        this.onTaskDoneListener = onTaskDoneListener;
    }

    @Override
    protected String doInBackground(String... params) {
        try {
            URL mUrl = new URL(urlStr);
            HttpURLConnection httpConnection = (HttpURLConnection) mUrl.openConnection();
            httpConnection.setRequestMethod("POST");
            httpConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            httpConnection.setUseCaches(false);
            httpConnection.setAllowUserInteraction(false);
            httpConnection.setConnectTimeout(1000000);
            httpConnection.setReadTimeout(1000000);
            httpConnection.setDoOutput(true);


            DataOutputStream localDataOutputStream = new DataOutputStream(httpConnection.getOutputStream());
            localDataOutputStream.writeBytes(requestBody.toString());
            localDataOutputStream.flush();
            localDataOutputStream.close();


            int responseCode = httpConnection.getResponseCode();
            httpConnection.connect();

            BufferedReader br = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }
            br.close();



            if (responseCode == HttpURLConnection.HTTP_OK) {
                return sb.toString();
            }

        } catch (IOException e) { e.printStackTrace();
        } catch (Exception ex) { ex.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        if (onTaskDoneListener != null && s != null) {
            onTaskDoneListener.onTaskDone(s);
        } else
            onTaskDoneListener.onError();
    }


    public interface OnTaskDoneListener {
        void onTaskDone(String responseData);
        void onError();
    }

}