Ich habe versucht, dieses Problem seit über 2 Stunden jetzt zu lösen. Meine POST-Anfragen scheinen alle in meiner LoginActivity zu funktionieren, aber aus irgendeinem Grund nicht in meiner MainActivity.Volley Anfrage funktioniert nur in LoginActivity
Mein Webserver verarbeitet Anfragen in Ordnung.
Die URL ist in meinem Projekt korrekt, ich habe es hier geändert. Hier
ist die 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);
}
}
Wenn ich etwas anderes schreiben sollte, einfach fragen. Hoffentlich erkennt jemand mein Problem, danke! :)
Wie sieht Ihr LoginActivity aussehen? – Eenvincible