добавление заголовка к urlConnection в Android - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь проанализировать файл XML в android через API URL.

Хотя я получаю следующую ошибку:

I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
    (HTTPLog)-Static: isSBSettingEnabled false
W/System.err: java.io.FileNotFoundException: 
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:251)
        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:26)
        at com.example.finalyearapp.Carbonfootprint.HandleXml$1.run(HandleXml.java:102)
        at java.lang.Thread.run(Thread.java:764)

Я считаю, что файл не не найдено, поскольку я не добавляю заголовок правильно, в настоящее время я называю ссылку следующим образом:

My Stringurl:

  String url = "https://apis.berkeley.edu/coolclimate/footprint input_size=" + population +
                "&input_footprint_transportation_fuel1=1"+
                "&input_footprint_transportation_miles1="+miles+
                "&input_footprint_transportation_mpg1="+ mpg +
                "&input_footprint_transportation_bus="+ bushours +
                "&input_footprint_transportation_commuter=" + trainhours +
                "&input_footprint_shopping_goods_default_furnitureappliances=" + household +
                "&input_footprint_shopping_goods_default_clothing=" + clothes +
                "&input_footprint_shopping_goods_default_other_personalcare=" + beauty +
                "&input_footprint_shopping_goods_default_other_entertainment=" + entertainment +
                "&input_footprint_housing_electricity_dollars="+yearlyvalue+
                "&input_footprint_housing_naturalgas_dollars="+ yearlyvalue +
                " -H \"accept: application/json\" -H \"app_id: #\" -H \"app_key: #";

Вы можете увидеть конец URL, у меня есть заголовок.

Как я это называю:

public void fetchXML(){
Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            URL url = new URL(urlstring);
            HttpURLConnection connect = (HttpURLConnection) url.openConnection();
            connect.setReadTimeout(100000);
            connect.setConnectTimeout(150000);
            connect.setRequestMethod("GET");
            connect.setDoInput(true);
            connect.connect();

            InputStream stream = connect.getInputStream();
            xmlFactoryObject = XmlPullParserFactory.newInstance();
            XmlPullParser myparser = xmlFactoryObject.newPullParser();
            myparser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            myparser.setInput(stream, null);
            parseXMLAndStoreIt(myparser);
            stream.close();


        }catch (Exception e){
            e.printStackTrace();
        }


    }
});

1 Ответ

0 голосов
/ 01 апреля 2020

Вы добавляете заголовок, вызывая setRequestProperty для HttpURLConnection.

connect.setRequestProperty("Content-Type", "application/json");

Прежде чем пытаться проанализировать ответ, вам, вероятно, следует проверить код ответа и перейти на http 200.

Вы Также следует позаботиться о том, чтобы при передаче вопроса здесь не передавались личные данные, такие как ключ API.

...