Итак, я немного поработал над этим и ударил кирпичную стену. Он продолжает давать мне фатальную ошибку, когда она начинает обрабатываться.
Так что в основном я хочу читать в текстовом файле через Интернет, а затем разбирать его, чтобы я мог разбить его и использовать JSON-анализатор для работы с данными JSON. Но это дальше по линии (и у меня есть часть). У меня просто возникают проблемы с подключением и загрузкой данных. Я просто хочу прочитать в текстовом файле, а затем распечатать его снова. Благодарим вас за помощь.Анализ текстового файла в android из HTML
Это то, что он дает мне
01-26 15: 11: 48.373 1958-1958/com.example.mmillar.urljsonparser I/искусство: Не поздно включение -Xcheck: JNI (уже) 01-26 15: 11: 48.556 1958-1958/com.example.mmillar.urljsonparser D/HTML P1 :: http://textfiles.com/100/914bbs.txt 01-26 15: 11: 48.556 1958-1958/com.example.mmillar.urljsonparser D/HTML P2 :: http://textfiles.com/100/914bbs.txt 01-26 15: 11: 48.557 1958-1958/com.example.mmillar.urljsonparser D/HTML inJSON :: http://textfiles.com/100/914bbs.txt 01-26 15: 11: 48.569 1958-1958/com.example.mmillar .urljsonparser D/Статус :: Открытое соединение 01-26 15: 11: 48.569 1958-1958/com.example.mmillar.urljsonparser D/Статус :: Закрывающее соединение 01-26 15: 11: 48.569 1958-1958/com.example.mmillar.urljsonparser D/AndroidRuntime : Выключение VM 01-26 15: 11: 48.570 1958-1958/com.example.mmillar.urljsonparser E/AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.mmillar.urljsonparser, PID: 1958 java.lang .RuntimeException: невозможно запустить Activity ComponentInfo {com.example.mmillar.urljsonparser/com.example.mmillar.urljsonparser.MainActivity}: android.os.NetworkOnMainThreadException at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2387) на android.app.ActivityThread.access $ 800 (ActivityThread.java:151) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1303) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:135) на android.app.ActivityThread.main (ActivityThread.java:5254) на java.lang.reflect.Method.invoke (собственный метод) at java.lang.reflect.Method.invoke (Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:903) at com.android.internal.os.ZygoteInit. главный(ZygoteInit.java:698) Вызванный: android.os.NetworkOnMainThreadException в android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1147) в java.net.InetAddress.lookupHostByName (InetAddress.java:418) на java.net.InetAddress.getAllByNameImpl (InetAddress.java:252) на java.net.InetAddress.getAllByName (InetAddress.java:215) на com.android.okhttp.HostResolver $ 1.getAllByName (HostResolver.java:29) at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress (RouteSelector.java:232) at com.android.okhttp.internal.http.RouteSelector.next (Ro uteSelector.java:124) at com.android.okhttp.internal.http.HttpEngine.connect (HttpEngine.java:272) at com.android.okhttp.internal.http.HttpEngine.sendRequest (HttpEngine.java:211) at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute (HttpURLConnectionImpl.java:382) at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse (HttpURLConnectionImpl.java: 332) в com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream (HttpURLConnectionImpl.java:199) в com.example.mmillar.urljsonparser.JSONParser.getStream (JSONParser.java:40) в com.example. mmillar.urljsonparser.MainActivity.onCreate (MainActivity.java:24) at android.app.Activity.performCreate (Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate (Instrumentation .java: 1106) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2278) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2387) в android.app.ActivityThread.access $ 800 (ActivityThread. java: 151) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1303) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper. java: 135) at android.app.ActivityThread.main (ActivityThread.java:5254) at java.lang.reflect.Method.invoke (собственный метод) на java.lang.reflect.Method.invoke (Method.java:372) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:903) на com.android.internal.os.ZygoteInit .main (ZygoteInit.java:698) 01-26 15: 11: 53.474 1958-1958 /? I/Процесс: сигнал отправки. PID: 1958 SIG: 9
Так что я немного потерял место, где это происходит не так. Я думаю, что у меня все налажено и идет хорошо. Как входной поток, bufferreader и все. Итак, вот что у меня есть.
Это программа Parser
public class JSONParser extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... inputUrl) {
getStream(inputUrl[0]);
return null;
}
public void getStream(String urlString)
{
Log.d("HTML inJSON: ", urlString);
//variables for the connection and downloading the JSON data
URL url = null;
HttpURLConnection urlConnection = null;
InputStream inputStream = null;
try {
url = new URL(urlString);
urlConnection = (HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
Log.d("Status:","Connection Opened");
//read in the data
BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
//build the data for parsing
StringBuilder myString = new StringBuilder();
String line;
while((line = br.readLine()) !=null)
{
myString.append(line);
}
Log.d("Status:"," JSON loaded into string");
Log.d("Total:", myString.toString());
} catch (IOException e) {
e.printStackTrace();
}finally {
if (urlConnection != null)
{
//close the connection
urlConnection.disconnect();
Log.d("Status:", " Closing connection");
}
}
}
}
И вот главная программа, которую я просто запустить вещь, потому что я просто хочу, чтобы вывести из файла на консоль я просто хочу, чтобы убедиться, оно работает.
public class MainActivity extends AppCompatActivity {
//http://textfiles.com/100/914bbs.txt
private String testHtml = "http://textfiles.com/100/914bbs.txt";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("HTML P1: ", testHtml);
JSONParser jp = new JSONParser();
Log.d("HTML P2: ", testHtml);
jp.getStream(testHtml);
Log.d("HTML P3: ", testHtml);
}
Спасибо, что сработал. Хорошо, поэтому я понимаю, почему, я думаю, что основной поток не может установить соединение, потому что у него нет всех ссылок на URL-адреса и прочее. Или это потому, что есть тот, который уже открыт, а затем он просто закрывает этот и дает ошибку? Еще раз спасибо – MNM
Рад, что я могу помочь. :) Проблема возникает из-за того, что по умолчанию Android ThreadPolicy блокирует любое использование сети в потоке пользовательского интерфейса.Его можно обойти, используя следующее: StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder(). AllowAll(). Build(); StrictMode.setThreadPolicy (политика); , но обычно это не рекомендуется для вызова какой-либо сетевой операции в потоке пользовательского интерфейса. –