>  기사  >  백엔드 개발  >  ByetHost 서버에 액세스할 때 내 Android 앱이 JSON 대신 HTML을 수신하는 이유는 무엇입니까?

ByetHost 서버에 액세스할 때 내 Android 앱이 JSON 대신 HTML을 수신하는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-28 02:34:02544검색

Why Does My Android App Receive HTML Instead of JSON When Accessing a ByetHost Server?

JSON 문자열을 사용하여 HTML 값 '브라우저 확인'을 전달하는 ByetHost 서버: Android 앱 문제

문제:

Android 앱에서 JSON 문자열을 구문 분석하는 동안 HTML 값이 전달됩니다. 이 문제는 PHP 파일이 있는 ByetHost 서버에 액세스할 때 발생하지만 다른 서버에는 액세스할 수 없습니다.

해결 방법:

ByetHost는 다음을 추가하는 testcookie-nginx-module이라는 보안 모듈을 사용합니다. HTTP 요청에 대한 추가 유효성 검사 계층입니다. 이 모듈은 2단계 프로세스를 따릅니다.

  1. 초기 요청: 첫 번째 HTTP 요청은 AES 키가 포함된 유효성 검사 쿠키를 생성하는 스크립트로 리디렉션됩니다.
  2. 후속 요청: 클라이언트는 후속 요청에서 유효성 검사 쿠키를 보내고, 모듈은 원하는 URL에 대한 액세스를 허용하도록 유효성을 검사합니다.

Android 앱 구현:

Android 앱에서 문제를 해결하려면 다음 단계를 따르세요.

  1. 확인 쿠키 검색: 웹 브라우저(예: Google Chrome)를 사용하세요. ) 원하는 URL에 액세스합니다.
  2. 브라우저에서 쿠키 키 가져오기: Chrome 설정을 사용하여 "콘텐츠 설정"으로 이동한 후 웹사이트 쿠키 아래에서 "__test"를 검색하세요. "content", "path" 및 "expires" 값을 복사합니다.
  3. Android 요청에 쿠키 추가: HTTP 요청에 유효성 검사 쿠키를 추가하도록 JSONfunctions 클래스를 수정합니다.
<code class="java">try {
    if (post == "POST") {
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(loginUrl);
        httpPost.setEntity(new UrlEncodedFormEntity(para));
        httpPost.setHeader("User-Agent", "Mozilla/5.0 ...");
        httpPost.addHeader("Cookie", "__test=" + cookieContent + "; expires=" + cookieExpires + "; path=" + cookiePath);
        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();
    } else if (post == "GET") {
        HttpClient httpClient = new DefaultHttpClient();
        String paramString = URLEncodedUtils.format(para, "utf-8");
        loginUrl += "?" + paramString;
        HttpGet httpGet = new HttpGet(loginUrl);
        httpGet.addHeader("Cookie", "__test=" + cookieContent + "; expires=" + cookieExpires + "; path=" + cookiePath);
        HttpResponse httpResponse = httpClient.execute(httpGet);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();
    }
}</code>

참고: cookieContent, cookieExpires 및 cookiePath를 브라우저에서 얻은 값으로 바꾸세요.

이렇게 수정하면 Android 앱에서 모든 HTTP 요청에 유효성 검사 쿠키를 사용하여 초기 HTML 리디렉션을 우회하고 JSON 데이터를 검색할 수 있도록 합니다.

위 내용은 ByetHost 서버에 액세스할 때 내 Android 앱이 JSON 대신 HTML을 수신하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.