2016-08-23 3 views
-1

동일한 문제가있는 많은 게시물을 읽었으며 솔루션을 적용하려고했지만 아무도 나를 위해 일하지 않았습니다. 나는 자바와 안드로이드에 꽤 새로운 사람이다. URL은 "https"입니다. 오류가 아닙니다. 내 Java 코드는 다음과 같습니다.응답 코드 500 Android POST 방법

public class Main3Activity extends AppCompatActivity { 

    Button b1; 

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

     b1 = (Button) findViewById(R.id.button_pago); 
     b1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       try { 
        new SendPostRequest().execute(); 
       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     }); 

    } 




    public class SendPostRequest extends AsyncTask<String, Void, String> { 

     protected void onPreExecute(){} 

     protected String doInBackground(String... arg0) { 

      try { 

       URL url = new URL("https://www.myweb.com/login_app.php"); 

       JSONObject postDataParams = new JSONObject(); 
       postDataParams.put("precio", "5000"); 
       postDataParams.put("texto", "f...h"); 
       Log.e("params",postDataParams.toString()); 

       HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
       conn.setReadTimeout(15000 /* milliseconds */); 
       conn.setConnectTimeout(15000 /* milliseconds */); 
       conn.setRequestMethod("POST"); 
       conn.setDoInput(true); 
       conn.setDoOutput(true); 

       OutputStream os = conn.getOutputStream(); 
       BufferedWriter writer = new BufferedWriter(
         new OutputStreamWriter(os, "UTF-8")); 
       writer.write(getPostDataString(postDataParams)); 

       writer.flush(); 
       writer.close(); 
       os.close(); 

       int responseCode=conn.getResponseCode(); 

       if (responseCode == HttpsURLConnection.HTTP_OK) { 

        BufferedReader in=new BufferedReader(new 
          InputStreamReader(
          conn.getInputStream())); 

        StringBuffer sb = new StringBuffer(""); 
        String line=""; 

        while((line = in.readLine()) != null) { 

         sb.append(line); 
         break; 
        } 

        in.close(); 
        return sb.toString(); 

       } 
       else { 
        return new String("false : "+responseCode); 
       } 
      } 
      catch(Exception e){ 
       return new String("Exception: " + e.getMessage()); 
      } 

     } 

     @Override 
     protected void onPostExecute(String result) { 
      Toast.makeText(getApplicationContext(), result, 
        Toast.LENGTH_LONG).show(); 
     } 
    } 

    public String getPostDataString(JSONObject params) throws Exception { 

     StringBuilder result = new StringBuilder(); 
     boolean first = true; 

     Iterator<String> itr = params.keys(); 

     while(itr.hasNext()){ 

      String key= itr.next(); 
      Object value = params.get(key); 

      if (first) 
       first = false; 
      else 
       result.append("&"); 

      result.append(URLEncoder.encode(key, "UTF-8")); 
      result.append("="); 
      result.append(URLEncoder.encode(value.toString(), "UTF-8")); 

     } 
     return result.toString(); 
    } 
} 

감사합니다. 나는 얼마 전에이 문제가 발생했다

81.184.8.77 - - [23/Aug/2016:12:54:05 +0200] "POST /login_app.php HTTP/1.1" 500 379 "-" "Dalvik/1.6.0 (Linux; U; Android 4.4.2; Android SDK built for x86 Build/KK)" "-" 
81.184.8.77 - - [23/Aug/2016:12:59:37 +0200] "POST /login_app.php HTTP/1.1" 500 10793 "-" "Dalvik/2.1.0 (Linux; U; Android 5.1.1; ONE E1001 Build/LMY47V)" "-" 
81.184.8.77 - - [23/Aug/2016:13:01:05 +0200] "POST /login_app.php HTTP/1.1" 500 10807 "-" "Dalvik/1.6.0 (Linux; U; Android 4.4.2; Android SDK built for x86 Build/KK)" "-" 
81.184.8.77 - - [23/Aug/2016:13:01:07 +0200] "POST /login_app.php HTTP/1.1" 500 379 "-" "Dalvik/1.6.0 (Linux; U; Android 4.4.2; Android SDK built for x86 Build/KK)" "-" 
+3

500은 내부 서버 오류입니다. 그러므로 서버 로그 파일을보고 무슨 일이 일어나는지 확인하십시오. – Jens

+0

답장을 보내 주셔서 감사합니다. 원래 게시물을 업데이트했습니다. – alberzyzz

+1

이것은 액세스 로그입니다. 오류가 표시되지 않습니다. – Jens

답변

0

방금 ​​해결책을 찾았습니다 : allow_url_fopen 값을 설정해야했습니다. 이 변수는 php.ini에서 찾을 수 있습니다. 다른 사람들은 잘하고 내 경우에는 파일을 서버에서 찾을 수 없으므로 도메인 공급자 웹 페이지로 이동하여 개인 영역에 들어가서 PHP 구성을 찾아야했습니다. .

다른 사람들에게 도움이 되었기를 바랍니다.

1

:

는 로그 파일을 확인, 나는 다음과 같은 많은 메시지를 발견했다. 서버의 로그를 통해 문제를 해결할 수 있습니다.

이러한 오류에 대한 로그는 대개 다음 위치에서 찾을 수 있습니다. var/log/apache2/error.log 이러한 오류를 기록하려면 php.ini 파일을 약간 변경해야 할 수 있습니다.

희망이 도움이 :)

+0

이것은 응답이 아닌 코멘트이어야한다 – Jens

+0

당신의 대답을 당신을 감사하십시오. 로그 위치를 찾을 수 없습니다. – alberzyzz

0

현재 HTTP 상태 코드 https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

500 내부 서버 오류

일반 오류 메시지의 다른 유형에 대해 읽을 수 있습니다 때 예상치 못한 상황 부여 더 이상 구체적인 메시지가 적합하지 않습니다.

+0

답변이 아니란 댓글이어야합니다. – Jens