Android、PHP、HttpGet
我目前有一个指向我编写的php文件的URL,该文件生成以下内容(我相信是JSON字符串) 我需要在安卓工作室拿这个。。。但我已经尝试了很多方法,但无论我发出http请求时应用程序崩溃了什么(从我发现的许多默认JSONParser类中的一个中),我也尝试了不同的解析器方法,但都没有成功 是否有一个特殊的格式,我应该检索这个?老实说,我从来没有在一个问题上花过像在这个问题上那样多的时间。极度沮丧>:( 编辑: 我尝试使用的方法之一Android、PHP、HttpGet,php,android,json,Php,Android,Json,我目前有一个指向我编写的php文件的URL,该文件生成以下内容(我相信是JSON字符串) 我需要在安卓工作室拿这个。。。但我已经尝试了很多方法,但无论我发出http请求时应用程序崩溃了什么(从我发现的许多默认JSONParser类中的一个中),我也尝试了不同的解析器方法,但都没有成功 是否有一个特殊的格式,我应该检索这个?老实说,我从来没有在一个问题上花过像在这个问题上那样多的时间。极度沮丧>:( 编辑: 我尝试使用的方法之一 public JSONObject makeHttpRequest(
public JSONObject makeHttpRequest(String url){
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
try {
HttpResponse httpresponse = httpclient.execute(httppost);
HttpEntity httpentity = httpresponse.getEntity();
is = httpentity.getContent();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
try {
while((line = reader.readLine())!=null){
sb.append(line+"\n");
}
is.close();
json = sb.toString();
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jObj;
}
编辑:调试日志结果
04-30 19:11:33.670 32306-32306/uconn.campusoddjobs E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: uconn.campusoddjobs, PID: 32306
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1239)
at java.net.InetAddress.lookupHostByName(InetAddress.java:388)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:239)
at java.net.InetAddress.getAllByName(InetAddress.java:214)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:367)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:519)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:497)
at uconn.campusoddjobs.JSONparser.getJSONFromUrl(JSONparser.java:48)
at uconn.campusoddjobs.Profile.<init>(Profile.java:39)
at uconn.campusoddjobs.MyAccountFragment.onCreateView(MyAccountFragment.java:23)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
at dalvik.system.NativeStart.main(Native Method)
04-30 19:11:33.670 32306-32306/uconn.campusoddjobs E/AndroidRuntime﹕ 致命异常:主
进程:uconn.campusoddjobs,PID:32306
android.os.NetworkOnMainThreadException
在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork上(StrictMode.java:1239)
位于java.net.InetAddress.lookupHostByName(InetAddress.java:388)
位于java.net.InetAddress.getAllByNameImpl(InetAddress.java:239)
位于java.net.InetAddress.getAllByName(InetAddress.java:214)
位于org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
位于org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
位于org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
位于org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:367)
位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:519)
位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:497)
位于uconn.campusoddjobs.JSONparser.getJSONFromUrl(JSONparser.java:48)
在uconn.campusoddjobs.Profile.(Profile.java:39)
位于uconn.campusoddjobs.MyAccountFragment.onCreateView(MyAccountFragment.java:23)
位于android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
位于android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
位于android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
位于android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
位于android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
位于android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
位于android.os.Handler.handleCallback(Handler.java:733)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:157)
位于android.app.ActivityThread.main(ActivityThread.java:5633)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
在dalvik.system.NativeStart.main(本机方法)
您正在主线程上发出请求。
不能在主线程上进行网络操作,因为它们会阻塞用户界面
您可以使用ASyncTask()来实现这一点
这是一个教程:
你的日志是什么?你得到了什么样的异常?顺便说一下,这里有一些有用的库来支持REST Web服务。考虑使用,它很容易使用,并且节省了大量的时间。但是看起来正确的想法是什么?崩溃了吗?我用调试模型FIFE SAVER中显示的内容做了一个编辑。…我知道这是一件很简单的事情,一个聪明的人在这里可以解决。现在我要解决更多的“困难”问题,比如试图获取我携带的信息,以便在TextView XD中正确显示…谢谢!04-30 19:11:33.670 32306-32306/uconn.campusoddjobs E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: uconn.campusoddjobs, PID: 32306
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1239)
at java.net.InetAddress.lookupHostByName(InetAddress.java:388)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:239)
at java.net.InetAddress.getAllByName(InetAddress.java:214)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:367)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:519)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:497)
at uconn.campusoddjobs.JSONparser.getJSONFromUrl(JSONparser.java:48)
at uconn.campusoddjobs.Profile.<init>(Profile.java:39)
at uconn.campusoddjobs.MyAccountFragment.onCreateView(MyAccountFragment.java:23)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
at dalvik.system.NativeStart.main(Native Method)