Я пытался решить эту проблему более 2 часов. Мои запросы POST, похоже, работают в моем LoginActivity, но по какой-то причине они не работают в моей MainActivity.Volley Запросить работу только в LoginActivity
Мой веб-сервер отлично обрабатывает запросы.
Правильный в моем проекте URL-адрес, я просто изменил его здесь.
Вот MainActivity:
package com.my.app;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
import okhttp3.MediaType;
public class MainActivity extends AppCompatActivity {
String serverResponse;
Boolean apiKeyValid = false;
// User Data
String status, userID, username, klasse, email, fullname, description, pb, classRep, schoolRep, mod, lastLogin, firstVisit, bugsFound, apiKey, userSummary;
public void validateApiKey(){
SharedPreferences sp =
getSharedPreferences("Authentication",
Context.MODE_PRIVATE);
if (sp.contains("apiKey")) {
apiKey = sp.getString("apiKey", "false");
RequestQueue MyRequestQueue = Volley.newRequestQueue(this);
String url = "http://mydomain/api/v1/apiKeyValid";
StringRequest MyStringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
serverResponse = response;
JSONObject userData = new JSONObject(response);
status = userData.getString("status");
if (status.equals("valid")) {
apiKeyValid = true;
}
} catch (JSONException e) {
Log.e("App", "unexpected JSON exception", e);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
protected Map<String, String> getParams() {
Map<String, String> MyData = new HashMap<String, String>();
MyData.put("apiKey", apiKey);
return MyData;
}
};
MyRequestQueue.add(MyStringRequest);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
validateApiKey();
if (apiKeyValid){
TextView hello = (TextView) findViewById(R.id.hi);
String msg = "Api Key is valid! :)\n" + "ApiKey: " + apiKey;
hello.setText(msg);
}
else{
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Если я должен отправить что-нибудь еще, просто спросите. Надеюсь, кто-то узнает мою проблему, спасибо! :)
Как ваш LoginActivity выглядеть? – Eenvincible