2017-03-03 6 views
0

まず、私はアンドロイド/ javaの場合、noobです。Webページの内容をJavaの文字列で取得する(phpのfile_get_contents()と似ています)

私はインターネットで検索していて、ウェブページの内容をjavaの文字列に(webviewなしで)取得する方法を見つけるために、いつもさまざまなことを試しています。発見されるべきものは廃止されているか、それは私の方法で立っている私の理解の欠如です、私はドキュメンテーションとすべてを読んできましたが、ちょうど私の頭が回転します。 1つの関数:file_get_contents()

私は目に見えないWebViewを使ってこれを行うことができますが、それが行く方法ではないことを知っている限り、私はウェブページにものを投稿することもできますwebview上でいくつかのjavascriptを実行することによってそれを行うことができるかもしれませんが、まだそれは行く方法ではないようです)。

可能であれば、誰かが私に

をウェブページに何かを投稿(および文字列に応答を取得)した文字列 と簡単な例に、ウェブページの内容を取得する方法の簡単な例をお願いできますいくつかの説明がありますが、実際の例があれば、なぜそれが動作するのか理解することができます。この渡って来るかもしれない人のため

+1

これに注目してください。http://stackoverflow.com/questions/1485708/how-do-i-do-a-http-get-in-java –

+0

@YohannesGebremariam私はこの例外を理解できません。私は今日試した複数の "ソリューション"で実行する..)私は何をしたコードをコピーし、それから新しいJavaファイルを作成し、私のメインファイルで私はc.getHTML( "http:// www .google.com ")をテキストビューに入れることができますが、アンドロイドスタジオが私にそれを周りにキャッチするように強制するので、私はそれを行いますが、常にキャッチが発生します(これはキャッチi – Henk

+0

あなたの例外を投稿してください。あなたが試したもの –

答えて

1

、私は次のコードでそれを解決してきました(これは、あなたが/がする必要がある場合は、POSTパラメータを追加することが含ま):

private class GetContents extends AsyncTask<String, Void, String> { 
     protected String doInBackground(String... p) { 
      String targetURL = p[0]; 
      String urlParameters = p[1]; 
     URL url; 
     HttpURLConnection connection = null; 
     try { 
      //Create connection 
      url = new URL(targetURL); 
      connection = (HttpURLConnection) url.openConnection(); 
      connection.setRequestMethod("POST"); 
      connection.setRequestProperty("Content-Type", 
        "application/x-www-form-urlencoded"); 

      connection.setRequestProperty("Content-Length", "" + 
        Integer.toString(urlParameters.getBytes().length)); 
      connection.setRequestProperty("Content-Language", "en-US"); 

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

      //Send request 
      DataOutputStream wr = new DataOutputStream(
        connection.getOutputStream()); 
      wr.writeBytes(urlParameters); 
      wr.flush(); 
      wr.close(); 

      //Get Response 
      InputStream is = connection.getInputStream(); 
      BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 
      String line; 
      StringBuffer response = new StringBuffer(); 
      while ((line = rd.readLine()) != null) { 
       response.append(line); 
       response.append('\r'); 
      } 
      rd.close(); 
      return response.toString(); 

     } catch (Exception e) { 

      e.printStackTrace(); 
      return null; 

     } finally { 

      if (connection != null) { 
       connection.disconnect(); 
      } 
     } 


     } 

     protected void onPostExecute(String result) { 
      // do something 
     } 
    } 

そして、同じようにそれを使用して新しいですGetContents.execute( "http://example.com"、 "a = b");

関連する問題