Android studio http响应返回捕获异常

时间:2015-06-08 04:56:44

标签: java android android-studio

我想从url获得响应,但它返回捕获的异常 详细地说,我创建了活动,它将获得两个输入变量emailid和密码 有一个登录按钮,单击登录按钮将调用getquizzes功能。

以下是我正在使用的代码:

public void getquizzes(View view) {

    emailid = (EditText) findViewById(R.id.email);
    ipassword = (EditText) findViewById(R.id.password);
    Toast toast = new Toast(getApplicationContext());
    toast.setGravity(Gravity.TOP | Gravity.LEFT, 10, 10);
    // Toast toast = Toast.makeText(context, text, duration);
    // toast.makeText(LoginActivity.this, emailid.getText(), toast.LENGTH_SHORT).show();

    String rurl = "http://www.savsoftquiz.com/quizdemo/index.php/verifylogin/api_login/" + emailid.getText() + "/" + ipassword.getText();

    Toast.makeText(this, verifylogin(rurl), Toast.LENGTH_LONG).show();
}


private String verifylogin(String rurl){

    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet(rurl);
    try {
        HttpResponse response = httpclient.execute(httpget);
        if(response != null) {
            String line = "";
            InputStream inputstream = response.getEntity().getContent();
            line = convertStreamToString(inputstream);
            return line;
        } else {
            return "Unable to complete your request";
        }
    } catch (ClientProtocolException e) {
        return "Caught ClientProtocolException";
    } catch (IOException e) {
        return "Caught IOException";
    } catch (Exception e) {
        return "Caught Exception";
    }
}

private String convertStreamToString(InputStream is) {
    String line = "";
    StringBuilder total = new StringBuilder();
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));
    try {
        while ((line = rd.readLine()) != null) {
            total.append(line);
        }
    } catch (Exception e) {
        Toast.makeText(this, "Stream Exception", Toast.LENGTH_SHORT).show();
    }
    return total.toString();
}

1 个答案:

答案 0 :(得分:0)

使用此格式。还将编辑文本值存储在字符串变量中。

  class Login extends AsyncTask<String, String, String> {


        String email ;
        String pass ;
        JSONObject json=null;

        @Override
        protected void onPreExecute() {

            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... params) {

            List<NameValuePair> parametres = new ArrayList<NameValuePair>();
            // getting JSON string from URL
            parametres.add(new BasicNameValuePair("email", email)); 
            parametres.add(new BasicNameValuePair("password", pass));

            JSONObject json = jsonParser.makeHttpRequest(url,
                    "GET", parametres);

            try {
                // Checking for SUCCESS TAG
                int success = json.getInt(KEY_SUCCESS);

                if (success == 1) {
                //yourcode
                    }
                    return json.getString(TAG_MESSAGE);
                } else {
                    return json.getString(TAG_MESSAGE);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {

            super.onPostExecute(result);
            }
        }
    }
  

json解析器

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import android.util.Log;

public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    // constructor
    public JSONParser() {

    }

    // function get json from url
    // by making HTTP POST or GET mehtod
    public JSONObject makeHttpRequest(String url, String method,
            List<NameValuePair> params) {

        // Making HTTP request
        try {

            // check for request method
            if(method == "POST"){
                // request method is POST
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();

                System.out.println(is + "post");

            }else if(method == "GET"){
                System.out.println("1");
                // request method is GET
                DefaultHttpClient httpClient = new DefaultHttpClient();
                System.out.println("2");
                String paramString = URLEncodedUtils.format(params, "utf-8");
                System.out.println("3");
                url += "?" + paramString;
                System.out.println("4");
                HttpGet httpGet = new HttpGet(url);
                System.out.println("5");
                HttpResponse httpResponse = httpClient.execute(httpGet);
                System.out.println("6");
                HttpEntity httpEntity = httpResponse.getEntity();
                System.out.println("7");
                is = httpEntity.getContent();
                System.out.println(is + "get");
            }           


        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();

            Log.i("TagCovertS", "["+json+"]");


        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        // return JSON String
        return jObj;

    }

    /**
     * Getting XML from URL making HTTP request
     * @param url string
     * */
    public String getXmlFromUrl(String url) {
        String xml = null;

        try {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            xml = EntityUtils.toString(httpEntity);

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // return XML
        return xml;
    }

    /**
     * Getting XML DOM element
     * @param XML string
     * */
    public Document getDomElement(String xml){
        Document doc = null;
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {

            DocumentBuilder db = dbf.newDocumentBuilder();

            InputSource is = new InputSource();
            is.setCharacterStream(new StringReader(xml));
            doc = db.parse(is); 

        } catch (ParserConfigurationException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (SAXException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (IOException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        }

        return doc;
    }

    /** Getting node value
     * @param elem element
     */
    public final String getElementValue( Node elem ) {
        Node child;
        if( elem != null){
            if (elem.hasChildNodes()){
                for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
                    if( child.getNodeType() == Node.TEXT_NODE  ){
                        return child.getNodeValue();
                    }
                }
            }
        }
        return "";
    }

    /**
     * Getting node value
     * @param Element node
     * @param key string
     * */
    public String getValue(Element item, String str) {
        NodeList n = item.getElementsByTagName(str);
        return this.getElementValue(n.item(0));
    }

}