带有post请求和参数作为Json对象android的HttpUrlConnection

2023-12-02

您好,我正在开发小型 Android 应用程序,我想在其中使用 HttpUrlConnection post 请求,并将 params 作为 json 对象。但它对我不起作用我是通过以下方式做到的:

try 
{
    URL url;
    DataOutputStream printout;
    DataInputStream  input;
    url = new URL ("https://abc.com");
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    urlConnection.setRequestMethod("POST");  
    urlConnection.setDoInput (true);
    urlConnection.setDoOutput (true);
    urlConnection.setUseCaches (false);

    urlConnection.setConnectTimeout(10000);  
    urlConnection.setReadTimeout(10000);

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

    JSONObject jsonParam = new JSONObject();

      JSONArray arr = new JSONArray();
      arr.put("LNCf206KYa5b");
      arr.put("oWdC0hnm1jjJ");
      jsonParam.put("places", arr);
      jsonParam.put("action", "Do");

            printout = new DataOutputStream(urlConnection.getOutputStream ());
            printout.writeUTF(URLEncoder.encode(jsonParam.toString(),"UTF-8"));
            printout.flush ();
            printout.close ();

            int HttpResult =urlConnection.getResponseCode();  

        if(HttpResult ==HttpURLConnection.HTTP_OK){  
        BufferedReader br = new BufferedReader(new InputStreamReader(  
            urlConnection.getInputStream(),"utf-8"));  
        String line = null;  

           while ((line = br.readLine()) != null) {  
            sb.append(line + "\n");  
        }  
        br.close();  

           //System.out.println(""+sb.toString());  

        }else{  
             System.out.println(urlConnection.getResponseMessage());  
        }  
    } catch (MalformedURLException e) {  

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

        e.printStackTrace();  
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{  
        if(urlConnection!=null)  
           urlConnection.disconnect();  
    }  
}

它不提供任何响应代码或任何输出。难道我做错了什么。如何解决这个问题。需要帮忙。谢谢 。

我收到以下系统错误

06-07 09:55:58.171: W/System.err(4624): java.io.IOException: Received authentication challenge is null
06-07 09:55:58.171: W/System.err(4624):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:1153)
06-07 09:55:58.171: W/System.err(4624):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:1095)
06-07 09:55:58.171: W/System.err(4624):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1048)
06-07 09:55:58.171: W/System.err(4624):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:726)
06-07 09:55:58.179: W/System.err(4624):     at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:121)
06-07 09:55:58.179: W/System.err(4624):     at com.mobiotics.qcampaigns.data.operation.ProximityOperation.execute(ProximityOperation.java:187)
06-07 09:55:58.179: W/System.err(4624):     at com.foxykeep.datadroid.service.RequestService.onHandleIntent(RequestService.java:145)
06-07 09:55:58.179: W/System.err(4624):     at com.foxykeep.datadroid.service.MultiThreadedIntentService$IntentRunnable.run(MultiThreadedIntentService.java:170)

此错误是由于 401 响应代码而发生的。

您可以像这样检查第一个响应代码

int responsecode = response.getStatusLine().getStatusCode();

如果服务器回复 401,则会抛出此异常。

401 的实际原因是您此时没有发送 OAuth 验证程序代码。

您可以参考下面的代码

    String url = LoginUrl;
    String resultstring = "";

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(url);

    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
    nameValuePairs.add(new BasicNameValuePair("j_username", username));
    nameValuePairs.add(new BasicNameValuePair("j_password", password));

    try {
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpContext localContext = new BasicHttpContext();
        localContext.setAttribute(ClientContext.COOKIE_STORE,
                Util.cookieStore);

        try {
            HttpResponse response = httpclient.execute(httppost,
                    localContext);

            int responsecode = response.getStatusLine().getStatusCode();
            if (responsecode == 200) {

                Util.responsecode = responsecode;
                resultstring = "Success";
                InputStream in = response.getEntity().getContent();
                resultstring = Util.convertinputStreamToString(in);

            } else if (responsecode == 401) {
                Util.responsecode = responsecode;
            }

        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有post请求和参数作为Json对象android的HttpUrlConnection 的相关文章

随机推荐

  • 如何在 Rails 应用程序中使用 link_to 将文章标题添加到 URL?

    我正在尝试跟随answer质疑 如何在 Rails 中获取 link to 输出 SEO 友好的 url 但没有得到结果 在我的 Rails 3 应用程序中 我有 routes rb match articles id title gt a
  • PHP应用程序全局设置

    我已经阅读了在 StackOverflow 上找到的关于该主题的几乎所有问题 但找不到直接答案 这是我的代码 应用类
  • 返回自连接表上的父/子关系

    我需要能够使用 SQL 返回所有级别的给定父 ID 的所有子列表 该表看起来像这样 ID ParentId Name 1 null Root 2 1 Child of Root 3 2 Child of Child of Root 给一个
  • 为什么 constexpr 似乎并不暗示 char* 为 const?

    似乎很明显 constexpr 意味着 const 因此很常见 constexpr int foo 42 no const here 但是如果你写 constexpr char const str foo 然后 如果传递了 Wwrite s
  • Typescript 和 Jest:模拟会抛出类型错误,因为它使用了错误的重载

    在 Jest 测试中给出以下内容 const mockDirListing string sdafd sfdf const mockReaddirSync jest spyOn fs readdirSync mockReaddirSync
  • Python Pandas 数据框到 XML

    希望得到一些帮助或推动正确的方向 我有一个来自 txt 文件的 pandas 数据框 并且想将其插入到我正在制作的 xml 文档中 我可以设置 xml 文档 并使用以下方法将我的数据帧转换为 xml 如何将 pandas dataframe
  • GWT:在服务器端获取常量

    我试图获取存储在服务器端客户端中的常量 ConstantsWithLookup 但它不知道如何做到这一点 我的常量接口和常量属性位于同一文件夹中 我尝试过其他类似线程的提示 但没有成功 我尝试使用 ResourceBundle 尝试 Her
  • 获取java.util.Arrays$ArrayList的类

    我怎样才能知道实例java util Arrays ArrayList 我已经尝试过这个代码片段 但它根本不起作用 if myList instanceof Arrays Do something here 我将对象类类型与 ArrayLi
  • jQuery 日期选择器多选和取消选择[重复]

    这个问题在这里已经有答案了 是否可以启用jquery UI datepicker 来启用多选和取消选择 我正在使用的日期选择器的示例 http jqueryui com datepicker 我有一个要求 使日期选择器能够选择多个日期 我想
  • 包含撇号的 Ruby 正则表达式是什么?

    我目前正在为 Ruby 做 exercism io 但无法通过最后的测试 最后的测试内容如下 def test with apostrophes phrase Phrase new First don t laugh Then don t
  • 如何处理 Visual Studio C++ 中的访问冲突?

    通常访问冲突会终止程序 并且我无法使用以下命令捕获 Win32 异常try and catch 有没有办法让我的程序保持运行 即使发生访问冲突 最好我想处理异常并向用户显示发生了访问冲突 编辑 我希望我的程序非常健壮 即使是针对编程错误 我
  • 如何使用 JDBC 连接到本地主机?

    我在自己的机器上安装了MySql 我使用 MySql CommandLine Client 创建了数据库 创建了表 在学校开展项目时 我使用以下语法连接到学校的数据库 public static Statement connect try
  • 忽略 Elasticsearch 中的空格

    对于我的搜索 我想考虑以下事实 space 过滤器请求中的字符不是强制的 例如 当我过滤 THE ONE 我看到了相应的文档 就算写了也想看 THEONE 这就是我今天的查询的构建方式 boolQueryBuilder must Query
  • 在google云平台上部署python脚本

    我正在弄清楚如何在谷歌云平台上部署我的脚本 我已经创建了一个包含以下内容的目录或文件夹script py以及所有的图书馆 lib文件夹 我不明白的是设置我的app yaml to run script py python 2 7 和访问li
  • Jquery在页面加载后生效

    我正在使用jquery ui 但该页面需要很长时间才能加载 我还对 UL 标签的 LI 元素使用制表符功能 但一瞬间列表按原样显示 然后选项卡效果发生 我已经编写了用于在同一 html 文件中调用选项卡的 javascript 我如何减少加
  • 使用 soundpool 播放声音示例

    我想学习如何使用soundpool方法 我想让你向我展示一个运行 2 个声音的非常简单的示例 创建一个名为的文件夹raw under your app res 然后将您的铃声粘贴到此文件夹中 例如your app res raw ringt
  • 在两个可能的分隔符之一之前查找一个单词

    word 12335 anotherword 2323434 totallydifferentword 455 word 32 我需要抓取之前的字符串 or 仅使用基本 R 函数 我可以使用以下方法来做到这一点stringr但不想向我的包添
  • 如何在.net core项目中设置soapclient的超时

    我必须在 Net Core 2 0 项目中使用 SOAP 服务 我添加了服务参考 如以下链接所述 缺少链接 404 对于某些方法 服务运行良好 但是 某些方法需要很长时间 由于操作服务正在执行 在这种情况下程序会抛出异常 System Ne
  • 如何从我自己的网站更新 Facebook 状态?

    我有自己的网站 正在创建博客 新闻条目 但我希望在添加它们时将它们直接上传到我的 Facebook 页面 有没有一种简单的方法可以做到这一点 我的代码是这样的 是否有代码或 API 我可以用来更新我的 Facebook 页面 您需要注册成为
  • 带有post请求和参数作为Json对象android的HttpUrlConnection

    您好 我正在开发小型 Android 应用程序 我想在其中使用 HttpUrlConnection post 请求 并将 params 作为 json 对象 但它对我不起作用我是通过以下方式做到的 try URL url DataOutpu