HTTP 요청을 통해 통신을 구현하는 동안 문제가 있습니다. 더 정확하게, 나는 발리 라이브러리를 사용했습니다이 내 클라이언트 측 요청입니다 :Android, Drupal 백엔드에 대한 HTTP POST 요청
StringRequest sr = new StringRequest(Request.Method.POST, "http://mysite/mydrupalservice",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.w("CheckinFragment. POST call, RESPONSE:", String.valueOf(response));
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("CheckinFragment. POST call, ERROR:", String.valueOf(error));
}
}){
@Override
protected Map<String,String> getParams()
{
Map<String,String> params = new HashMap<String, String>();
params.put("action", "something");
params.put("access_token", "something");
params.put("activity", "1");
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError
{
Map<String,String> headers = new HashMap<String, String>();
headers.put("Accept", "application/json");
headers.put("Content-Type","application/json; charset=utf-8");
headers.put("Connection", "keep-alive");
return headers;
}
};
// add the request object to the queue to be executed
Controller.getInstance().addToRequestQueue(sr);`
이 코드는 제대로 안드로이드 측에서 실행되지만, 수신 된 응답은 다음과 같다 :
BasicNetwork.performRequest: Unexpected response code 404 for http://mysite/myservice
android.volley.AuthFailureError.
클라이언트 측 코드를 테스트하기 위해 http://httpbin.org/을 사용해 보았지만 제대로 작동합니다.
그래서 문제는 서버 쪽 일 수 있다고 생각했습니다. 예를 들어 Firefox의 확장 Poster를 사용하여 POST 매개 변수로 HTTP 요청을 수행하려고하면 서버에서 올바른 응답을받습니다.
401 오류 코드를 보면 이전에 Drupal에서 작성한 서비스에 사용자 인증이 필요하다고 생각했지만 그 옵션은 이전에는 비활성화되었습니다.
이 문제를 해결하는 방법을 모르겠지만 누구입니까? 관심을 가져 주셔서 감사합니다.
Drupal 백엔드에 다른 "간단한"방법이 있습니까? 어쩌면 오류가 발생하는지 먼저 GET 메서드를 호출하려고합니다. – alpinescrambler
예, 몇 가지 방법이 있습니다. 이들 모두는 HTTP Get 요청에 사용됩니다. – CatchMeIfUCan