【问题标题】:Catching JSON response form web post request in android在android中捕获JSON响应表单web post请求
【发布时间】:2017-03-31 07:37:37
【问题描述】:

我一直在使用 android 中的 WebView 来在 android 中加载 HTML 文件。在我的路上,我正在尝试测试一个 API 服务,如果我提供所需的参数并以 JSON 响应,它将让我访问这些服务。 我的问题是,如何在 android 中解析从 FORM POST 请求中获取的 JSON 并重用结果。

下面提供了我的带有 post 方法的表单 HTML:

     <form method="post" action="htts://www.ipay.com.np/api/v2/recharge">
    <div class="col-md-6">

    <div class="form-group">
      <label for="email">Username:</label>
      <input type="email" name="username" class="form-control" id="username" placeholder="Enter username">
    </div>
  </div>

  <div class="col-md-6">

    <div class="form-group">
      <label for="pwd">Password:</label>
      <input type="password" name="password" class="form-control" id="pwd" placeholder="Enter password">
    </div>
  </div>

  <div class="col-md-12">

  <div class="form-group">
    <label for="choose">Amount:</label>
    <select name="mid"  class="form-control" id="mid" placeholder="Query">
      <option value="null">what-would-you-like-to-do</option>
      <option value="37">NTC-POSTPAID RECHARGE</option>
      <option value="35">NTC LANDLINE PSTN</option>
      <option value="20">NCELL AIRTIME</option>
      <option value="36">NTC PREPAID</option>
      <option value="33">ADSL UNLIMITED</option>
      <option value="39">ADSL VOLUME</option>
      <option value="46">UTL TOPUP</option>

  </select>
  </div>
</div>

  <div class="col-md-6">

    <div class="form-group">
      <label for="phone">Phone Number:</label>
      <input type="text" name="phone" min="1" class="form-control" id="phone" placeholder="Enter phone number">
    </div>
  </div>
  <div class="col-md-6">

    <div class="form-group">
      <label for="amount">Amount:</label>
      <select name="amount"  class="form-control" id="email" placeholder="Enter email">
        <option value="null">select-amount</option>
        <option value="Rs.10">10</option>
        <option value="Rs.20">20</option>
        <option value="Rs.30">30</option>
        <option value="Rs.40">40</option>
        <option value="Rs.50">50</option>
        <option value="Rs.100">100</option>
        <option value="Rs.100+">100+</option>
    </select>
    </div>
  </div>

  <div class="col-md-6">

    <div class="checkbox">
      <label><input type="checkbox"> Remember me</label>
    </div>
  </div>
</div>

    <button type="submit" class="btn btn-default">Submit</button>
  </form>
</div>

我从以下 POST 方法得到的响应示例是:

    {

"txn_no" : 12343,

"ord_no" : 1222,

"status" : "paid",

"merchant" : "Ncell Air time",

"description" : "recharge of...",

"amount" : 20.00, "reward" : 0.02

}

如果我只想在我的 android 应用程序中捕获 json 响应,那将非常有帮助。

【问题讨论】:

  • 您可以为输入字段创建具有适当 UI 的活动并从那里发送发布请求,为什么要使用 WebView 来实现它?
  • @SalmanKhakwani 我没有合适的 URL,我需要从网站上使用它。

标签: android json api post response


【解决方案1】:

它不需要使用webview,你可以在activity中通过HttpPost来实现它,

public boolean validateLogin()
            {
                try {
                    progressBar.setVisibility(View.VISIBLE);
    //call webservice and get json response
                    String JSONStr = PostData();
                    jsonObject = new JSONObject(JSONStr);
                    String status = jsonObject.get("success").toString();
                    return status.equals("1");
                }
                catch (Exception e)
                {
                    return false;
                }
            }
             public String PostData() {
                    String jsonResponse = "";
                    String URL = "https://example.com/Login.php?Email=" + str_email + "&Password=" + str_password;
                    try {
                        HttpClient httpClient = new DefaultHttpClient();
                        HttpPost httpPost = new HttpPost(URL);

                        HttpResponse httpResponse = httpClient.execute(httpPost);

                        HttpEntity httpEntity = httpResponse.getEntity();
                        jsonResponse = readResponse(httpResponse);
                    } catch (Exception exception) {
                    }
                    return jsonResponse;
                }

                public String readResponse(HttpResponse res) {
                    InputStream is = null;
                    String return_text = "";
                    try {
                        is = res.getEntity().getContent();
                        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
                        String line = "";
                        StringBuffer sb = new StringBuffer();
                        while ((line = bufferedReader.readLine()) != null) {
                            sb.append(line);
                        }
                        return_text = sb.toString();
                    } catch (Exception e) {

                    }
                    return return_text;

                }

【讨论】:

  • 我只有基本 URL。问题是,https://example.com/Login.php?Email=" + str_email + "&amp;Password=" + str_password 我如何确定该值将在电子邮件字段或其他内容中发送?它们是在来自 html 表单 POST 的 POST 请求中的 name 属性中找到的吗?我很困惑
  • "Email" 是我的查询字符串中的一个字段,由我的 php Web 服务获取。在网络服务中,我有一个名为 Login.php 的文件,我在其中检索电子邮件字段。 $email=$_REQUEST["Email"];
猜你喜欢
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多