3

我需要帮助发送HTTP GET请求。我的代码如下:

    URL connectURL = new URL("url");
    HttpURLConnection conn = (HttpURLConnection)connectURL.openConnection(); 

    conn.setDoInput(true); 
    conn.setDoOutput(true); 
    conn.setUseCaches(false); 
    conn.setRequestMethod("GET"); 

    conn.connect();
    conn.getOutputStream().flush();      
    String response = getResponse(conn);

但它在getResponse(conn);为什么失败?

4

4 回答 4

15

GET 请求可以这样使用:

try {
    HttpClient client = new DefaultHttpClient();  
    String getURL = "http://www.google.com";
    HttpGet get = new HttpGet(getURL);
    HttpResponse responseGet = client.execute(get);  
    HttpEntity resEntityGet = responseGet.getEntity();  
    if (resEntityGet != null) {  
        // do something with the response
        String response = EntityUtils.toString(resEntityGet);
        Log.i("GET RESPONSE", response);
    }
} catch (Exception e) {
    e.printStackTrace();
}
于 2012-05-04T20:44:47.093 回答
0

我正在使用这段代码进行 GET 响应,这对我来说运行良好:

HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet(requestUrl);

    HttpResponse response=null;
    try {
        response = client.execute(request);
    } catch (ClientProtocolException e) {
        Log.d(TAG,"1. "+e.toString());

    } catch (IOException e) {
        Log.d(TAG,"2. "+e.toString());

    }
    int status_code=response.getStatusLine().getStatusCode();
    Log.d(TAG,"Response Code returned ="+status_code);

    BufferedReader in=null;
    try {
        in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    } catch (IllegalStateException e) {
        Log.d(TAG,"3. "+e.toString());
    } catch (IOException e) {
        Log.d(TAG,"4. "+e.toString());
    }

    StringBuffer sb = new StringBuffer("");
    String line = "";
    String newline = System.getProperty("line.separator");
    try {
        while ((line = in.readLine()) !=null){
            sb.append(line + newline);
        }
        String data = sb.toString();
        Log.d(TAG,data);
    } catch (IOException e) {
        Log.d(TAG,"5. "+e.toString());
    }
    try {
        in.close();
    } catch (IOException e) {
        Log.d(TAG,"6. "+e.toString());
    }
    String data = sb.toString();

    try {
        if(status_code==200 || status_code==401){
            JSONObject responseJSONObject = new JSONObject(data);
            responseJSONObject.put("tpg_status_code", status_code);
        }
    } catch (JSONException e) {
        Log.d(TAG,"6. "+e.toString());
    }
于 2013-02-13T12:10:55.227 回答
0

我相信 setDoOutput(true) 自动暗示 POST。

于 2012-12-14T08:56:21.233 回答
0

我使用这段代码,它工作得很好:

public class HttpGetAndroidExample extends Activity {

            TextView content;
            EditText fname,email,login,pass;

        @Override
        protected void onCreate(Bundle savedInstanceState) {

                  super.onCreate(savedInstanceState);
                 setContentView(R.layout.activity_http_get_android_example);

                 content   =  (TextView)findViewById(R.id.content);
                 fname     =  (EditText)findViewById(R.id.name);
                 email      =  (EditText)findViewById(R.id.email);
                 login       =  (EditText)findViewById(R.id.loginname);
                 pass       =  (EditText)findViewById(R.id.password);

               Button saveme=(Button)findViewById(R.id.save);


        saveme.setOnClickListener(new Button.OnClickListener(){
          public void onClick(View v)
           { 
                      //ALERT MESSAGE
                     Toast.makeText(getBaseContext(),"Please wait, connecting to server.",Toast.LENGTH_LONG).show();

            try{ 

                 // URLEncode user defined data

                   String loginValue    = URLEncoder.encode(login.getText().toString(), "UTF-8");
                   String fnameValue  = URLEncoder.encode(fname.getText().toString(), "UTF-8");
                   String emailValue   = URLEncoder.encode(email.getText().toString(), "UTF-8");
                   String passValue    = URLEncoder.encode(pass.getText().toString(), "UTF-8");

                // Create http cliient object to send request to server

                   HttpClient Client = new DefaultHttpClient();

                // Create URL string

                 String URL = "http://androidexample.com/media/webservice/httpget.php?user="+loginValue+"&name="+fnameValue+"&email="+emailValue+"&pass="+passValue;

                //Log.i("httpget", URL);

               try
                {
                              String SetServerString = "";

                            // Create Request to server and get response

                              HttpGet httpget = new HttpGet(URL);
                             ResponseHandler<String> responseHandler = new BasicResponseHandler();
                             SetServerString = Client.execute(httpget, responseHandler);

                              // Show response on activity 

                             content.setText(SetServerString);
                 }
               catch(Exception ex)
                  {
                         content.setText("Fail!");
                   }
            }
          catch(UnsupportedEncodingException ex)
           {
                   content.setText("Fail");
            }     
        }
    });  

} }

于 2013-06-14T18:32:42.983 回答