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);
}
}
あなたのメソッドonClickを見ることができますか?どこにそれらを添付しますか? –
この全体の質問は**意味がありません**。 Android StudioはIDEです。あなたはAndroid用にプログラムしようとしていますか?もしそうなら、 'localhost'はあなたがあなたのアンドロイドデバイス上にサーバを作ることができなければ、決して動作しません。 – 323go
328goそれで、あなたはなぜダウンボートしますか? Android StudioはIDEだと私は知っています。私はAndroidでプログラミングしています。私はmongoに接続するために地元のApiオンラインを持っていますが、なぜこれがあなたにとって奇妙なのか分かりません。 –