나는 following this tutorial입니다. 지시 사항을 정확히 따르도록주의를 기울였습니다. 내가 한 모든 일은 사람이하고있는 것과 동일합니다. 단, PHP 파일에서는 내 호스트, 사용자 이름, 암호 및 데이터베이스를 제공합니다. 내 데이터베이스에서 튜토리얼과 동일한 테이블을 만들었습니다 (같은 필드 유형의 이름, 모든 것, 동일한 스크립트를 실행했습니다). 그리고 Eclipse에서 똑같은 코드를 가지고 있습니다.Android에서 mySQL db에 연결할 때 오류가 발생했습니다.
여기 내 코드입니다. 그것은 주어진 것과 동일하지만 내 HttpPost 링크는 내 것입니다. 내 응용 프로그램을 실행할 때
package com.heatscore.pregame;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class AlertsActivity extends Activity
{
JSONArray jArray;
String result = null;
InputStream is = null;
StringBuilder sb=null;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Uses the scores xml layout
setContentView(R.layout.alerts);
String result = "";
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("year","1980"));
//http post
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://<EXCLUDED FOR QUESTION>/getAllPeopleBornAfter.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
}
catch(Exception e)
{
Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to string
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}
catch(Exception e)
{
Log.e("log_tag", "Error converting result "+e.toString());
}
//parse json data
try
{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++)
{
JSONObject json_data = jArray.getJSONObject(i);
Log.i("log_tag","id: "+json_data.getInt("id")+
", name: "+json_data.getString("name")+
", sex: "+json_data.getInt("sex")+
", birthyear: "+json_data.getInt("birthyear"));
}
}
catch(JSONException e)
{
Log.e("log_tag", "Error parsing data "+e.toString());
}
}
}
불행하게도의 로그 캣 오류를 보여줍니다
04-01 00:01:18.483: E/log_tag(5218): Error converting result java.lang.NullPointerException
04-01 00:01:18.483: E/log_tag(5218): Error parsing data org.json.JSONException: End of input at character 0 of
가 나는 또한 매니페스트 파일에 올바른 사용 권한을 추가했습니다. 그리고 네, 그 줄은 신청 마감 태그 뒤에 있습니다.
<uses-permission android:name="android.permission.INTERNET"/>
호스트에 ping을 실행하여 네트워크에 문제가 없는지 확인합니다. 결과는 성공적이었다. 또한 에뮬레이터가 아닌 내 휴대 전화에서 앱을 실행 중입니다. 프로그램이 충돌하지 않지만 로그에 오류가 있습니다.
거의 모든 것이 예제와 동일하다면 왜 내 기능이 작동하지 않습니까? 다른 누구에게도이 문제가 있었으며 무엇을 했습니까? 이것을 알아내는 방법이 있습니까?
업데이트 : [{ "ID": "1", "이름"내 PHP 파일 나는 서버를 찾아 나는이 다음과 같은 출력을 얻을 파일을 클릭하면 때문에 문제라고 생각하지 않습니다 : "bob", "sex": "1", "birthyear": "1990"}, { "id": "2", "name": "sue", "sex": "1", "birthyear" "1981"}, { "id": "3", "name": "mike", "sex": "1", "birthyear": "1989"}] – Zolt
그래서 다른 문제 여야합니다. – Zolt
업데이트 : jArray의 길이가 0 인 것을 알았습니다. lblShow.setText (jArray.length() + ""); 출력하지 말라. 또한 "result"변수의 값은 빈 문자열입니다. 또한 while ((line = reader.readLine())! = null) 반복은 0 번 반복됩니다. – Zolt