HttpUrlConnection работает с одним URL, но не с другим URL - PullRequest
0 голосов
/ 12 февраля 2019

Один URL хорошо работает с HttpUrlConnection в asynctask, но другой, который все еще отправляет и запрашивает те же данные, приводит к сбою приложения.

, но в том же каталоге сервера есть другие файлы, и они успешно выполняют DoInput и DoOutput

@Override
protected String doInBackground(String... params)
{
    try {

        getter_url = new URL("this one returns successfully");
        getter_url0 = new URL("this one just crashes the app");

    } catch (MalformedURLException e) {
        Toast.makeText(ctx, e.toString(), Toast.LENGTH_SHORT).show();
        // TODO Auto-generated catch block
        e.printStackTrace();
        return e.toString();
    }
    afbah= params[0];
    if (afbah.equals("whfiavbkjnfdl"))
    {
        String kbfisy= params[1];
        try
        {
            try {
                httpURLConnection = (HttpURLConnection) getter_url0.openConnection();
            }catch (Exception e){
                Toast.makeText(ctx, e.toString(), Toast.LENGTH_SHORT).show();
                e.printStackTrace();
                return e.toString();
            }
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            OutputStream outputStream = httpURLConnection.getOutputStream();
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
            String data = URLEncoder.encode("gisyfgb", "UTF-8") + "=" + URLEncoder.encode(kbfisy, "UTF-8");
            bufferedWriter.write(data);
            bufferedWriter.flush();
            bufferedWriter.close();
            outputStream.close();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"));
            StringBuilder ANSWER = new StringBuilder();
            String response = "";
            String line = "";
            while ((line = bufferedReader.readLine()) != null)
            {
                ANSWER.append(line).append("\n");
                response+= line;
            }
            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();
            return response;

Я действительно не могу понять, почему два URL будут работать по-разному

В API почтальона это приводит к успеху двух URL, но HttpUrlConnection приводит к успеху для первого URL и к ошибке для второго.

пожалуйста, попросите меня предоставить любую информацию, которая вам нужна

1 Ответ

0 голосов
/ 12 февраля 2019

Какие примеры URL?Возможно, что URL-адрес разбирается неправильно, попробуйте этот подход:

URL url = new URL(urlString);
URI uri = new URI(
    url.getProtocol(),
    url.getUserInfo(),
    url.getHost(),
    url.getPort(),
    url.getPath(),
    url.getQuery(),
    url.getRef()
);

HttpURLConnection connection = (HttpURLConnection) new URL(uri.toASCIIString()).openConnection();
...