我在为RssReader运行我的Android项目时遇到错误.
码:
URL url = new URL(urlToRssFeed);
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader xmlreader = parser.getXMLReader();
RssHandler theRSSHandler = new RssHandler();
xmlreader.setContentHandler(theRSSHandler);
InputSource is = new InputSource(url.openStream());
xmlreader.parse(is);
return theRSSHandler.getFeed();
Run Code Online (Sandbox Code Playgroud)
它显示以下错误:
android.os.NetworkOnMainThreadException
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我对Kotlin完全不熟悉.我想使用POST方法进行登录验证,并使用GET方法获取一些信息.我已经拥有以前项目的URL,服务器用户名和密码.我没有找到任何使用这个东西的正确示例项目.任何人都可以建议我在HTTP请求中使用GET和POST方法的任何工作示例
我的Android 3.1模拟器有些问题.我无法获取我的XML文件.
protected InputStream getInputStream() {
try {
return feedUrl.openConnection().getInputStream();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
这是错误跟踪:
08-07 22:34:26.657: ERROR/AndroidRuntime(563): Caused by: android.os.NetworkOnMainThreadException
08-07 22:34:26.657: ERROR/AndroidRuntime(563): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
08-07 22:34:26.657: ERROR/AndroidRuntime(563): at java.net.InetAddress.lookupHostByName(InetAddress.java:477)
08-07 22:34:26.657: ERROR/AndroidRuntime(563): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
08-07 22:34:26.657: ERROR/AndroidRuntime(563): at java.net.InetAddress.getAllByName(InetAddress.java:249)
08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:69)
08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48)
08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304)
08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)
08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292)
08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274)
08-07 22:34:26.657: ERROR/AndroidRuntime(563): …Run Code Online (Sandbox Code Playgroud) 我试图回答这个(接受的答案)。我可以使用“ PING”方法,但是UI变黑了,因为它说它将阻塞UI线程。它看起来并不好并且令人不安,所以我尝试使用第二种方法“连接到Internet上的套接字”,但是我不知道如何在Kotlin中使用该类。
这是android studio将Java转换为kotlin的结果
package com.mockie.daikokuten.helpers
import android.os.AsyncTask.execute
import android.os.AsyncTask
import java.io.IOException
import java.net.InetSocketAddress
import java.net.Socket
internal class InternetCheck(private val mConsumer: Consumer) : AsyncTask<Void, Void, Boolean>() {
interface Consumer {
fun accept(internet: Boolean?)
}
init {
execute()
}
override fun doInBackground(vararg voids: Void): Boolean? {
try {
val sock = Socket()
sock.connect(InetSocketAddress("8.8.8.8", 53), 1500)
sock.close()
return true
} catch (e: IOException) {
return false
}
}
override fun onPostExecute(internet: Boolean?) {
mConsumer.accept(internet)
}
}
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何使用它。我这样尝试:
InternetCheck{ …Run Code Online (Sandbox Code Playgroud) 使用rx android和改造时,我在线程异常上得到网络。这是我的代码:
public Observable<PostVariablesModel> requestApiItem() {
return getauthenticationtoken.getToken().flatMap(new Func1<String, Observable<PostVariablesModel>>() {
public Observable<PostVariablesModel> call(String token) {
return service.postdata(value1, value2, value3, token);
}
}).subscribeOn(Schedulers.io());
}
public void postdata() {
requestApiItem() //I think problem is here any idea?
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<PostVariablesModel>() {
@Override
public void onCompleted() {
System.out.print("Complete");
}
@Override
public void onError(Throwable e) {
System.out.print("Fail");
}
@Override
public void onNext(PostVariablesModel apiResult) {
System.out.print(apiResult.toString());
}
});
}
Run Code Online (Sandbox Code Playgroud)
完成http调用后,我们是否需要取消订阅。任何的想法?
例外在下面给出。我在代码中的postdata方法的onError上收到此异常:
android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
at java.net.InetAddress.lookupHostByName(InetAddress.java:431)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
at java.net.InetAddress.getAllByName(InetAddress.java:215)
at okhttp3.Dns$1.lookup(Dns.java:39)
at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:170) …Run Code Online (Sandbox Code Playgroud) 我编写了一个从Android设备发送电子邮件的应用程序但是当我尝试发送电子邮件时出现以下异常:
android.os.NetworkOnMainThreadException
为什么会发生这种情况,我该如何解决?
我一直在尝试运行我的客户端/服务器android程序.但每当我在Android上运行客户端部分时它会给出一个错误,不幸的是你的应用程序已停止运行.我试过读logcat但是还没能解决问题.下面是我的代码...我已经尝试了3天.需要项目帮助
logcat的
12-06 21:05:19.948: D/AndroidRuntime(2136): Shutting down VM
12-06 21:05:19.948: W/dalvikvm(2136): threadid=1: thread exiting with uncaught exception (group=0xa4cf8b20)
12-06 21:05:19.980: E/AndroidRuntime(2136): FATAL EXCEPTION: main
12-06 21:05:19.980: E/AndroidRuntime(2136): Process: com.example.simpleclientapp, PID: 2136
12-06 21:05:19.980: E/AndroidRuntime(2136): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.simpleclientapp/com.example.simpleclientapp.New_main_activity}: android.view.InflateException: Binary XML file line #1: Error inflating class linearlayout
12-06 21:05:19.980: E/AndroidRuntime(2136): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
12-06 21:05:19.980: E/AndroidRuntime(2136): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
12-06 21:05:19.980: E/AndroidRuntime(2136): at android.app.ActivityThread.access$800(ActivityThread.java:135)
12-06 21:05:19.980: E/AndroidRuntime(2136): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
12-06 21:05:19.980: E/AndroidRuntime(2136): at android.os.Handler.dispatchMessage(Handler.java:102)
12-06 21:05:19.980: E/AndroidRuntime(2136): at android.os.Looper.loop(Looper.java:136) …Run Code Online (Sandbox Code Playgroud)