2016-03-25 13 views
-1

AndroidStudioでApache HTTPを使用していくつかの苦労があります。AndroidスタジオはhttpとNetBeansではありません

検索してみましたが、NetBeansで多く試してみました。

最終的に私は https://hc.apache.org/downloads.cgi(4.5.2.zip)で手動でlibsをダウンロードすることになりました。 NetbeansのテストプロジェクトにそれらのLIBSを追加しましたし、このコードでは(NetBeansの中で)正常に動作している:

CloseableHttpClient client = HttpClients.createDefault(); 
HttpPost httpPost = new HttpPost("http://localhost:5555/test"); 

List<NameValuePair> params = new ArrayList<>(); 
params.add(new BasicNameValuePair("username", "Jim")); 
params.add(new BasicNameValuePair("password", "password")); 
httpPost.setEntity(new UrlEncodedFormEntity(params)); 

CloseableHttpResponse response = client.execute(httpPost); 

レスポンスAPIからのメッセージ:AndroidStudioで

recived request 

このdoes'ntが動作しているようですし、私は理由を理解することができます。私は/ libsフォルダに同じlibsを追加しました。 は、私はすでに私が私のGradleのアプリのファイルに追加するために必要ないくつかのヒントは、私はこれで終わった:これはコンパイルされ、エミュレータは罰金を実行している

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     applicationId "com.example.jim.app" 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    // useLibrary 'org.apache.http.legacy' 

    packagingOptions { 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.2.0' 
} 

。しかし、私は、HTTPポストを送信するために、まったく同じコードを使用する場合、私は今、私にはどんな意味がありません。何、このエラーが出る:

E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.example.jim.app, PID: 2303 
    java.lang.IllegalStateException: Could not execute method for android:onClick 

(別のクリックが正常に動作します。..)

いくつかの場合私が何が欠けているか知っています。 また、追加情報が必要な場合は、私は詳細を証明して幸いです。

編集 アンドロイド

全体のjavaファイル
public class SignInActivity extends AppCompatActivity { 
    private final String API_URL = "http://localhost:5555/user"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_sign_in); 
    } 

    /** Authenticate user */ 
    public void signIn(View view) { 

     // Test http post request 
     try { 
      CloseableHttpClient client = HttpClients.createDefault(); 
      HttpPost httpPost = new HttpPost(API_URL); 

      List<NameValuePair> params = new ArrayList<>(); 
      params.add(new BasicNameValuePair("username", "John")); 
      params.add(new BasicNameValuePair("password", "pass")); 
      httpPost.setEntity(new UrlEncodedFormEntity(params)); 

      CloseableHttpResponse response = client.execute(httpPost); 
      client.close(); 
     } catch (ClientProtocolException e) { 
      System.err.println(e.getMessage()); 
     } catch (IOException e) { 
      System.err.println(e.getMessage()); 
     } 
    } 

    /** Navigate to activity Sign Up */ 
    public void signUp(View view) { 
     Intent intent = new Intent(this, SignUpActivity.class); 
     startActivity(intent); 
    } 
} 
+0

あなたのメソッドonClickを見ることができますか?どこにそれらを添付しますか? –

+0

この全体の質問は**意味がありません**。 Android StudioはIDEです。あなたはAndroid用にプログラムしようとしていますか?もしそうなら、 'localhost'はあなたがあなたのアンドロイドデバイス上にサーバを作ることができなければ、決して動作しません。 – 323go

+0

328goそれで、あなたはなぜダウンボートしますか? Android StudioはIDEだと私は知っています。私はAndroidでプログラミングしています。私はmongoに接続するために地元のApiオンラインを持っていますが、なぜこれがあなたにとって奇妙なのか分かりません。 –

答えて

-1

あなたはAPI 23を使用する場合は、Apacheライブラリを使用するには、次のように行う必要があります。

defaultConfig { 
     applicationId "com.example.jim.app" 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
     useLibrary 'org.apache.http.legacy' 
    } 
+0

これは私のライブラリを置き換えるか、これを追加するだけですか? –

+0

useLibrary 'org.apache.http.legacy'を追加するだけです – user3148900

+0

これはうまくいきません –

関連する問題