【问题标题】:how Send information to server with volley?如何通过凌空向服务器发送信息?
【发布时间】:2020-02-28 14:28:30
【问题描述】:

我想使用 volley 库将信息发送到服务器并将其保存到表中。但是运行应用后,表中没有数据存储。

你能说出哪一部分是错的吗? (我做了网站上说的大部分事情,但我的问题没有解决)

cart.java

  public class cart extends AppCompatActivity {
Button Add;   
private static final String url="http://localhost/test/addpost.php";
Faculty items;
JSONArray myarray;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cart);
    Add=findViewById(R.id.btn_basket_pay);
    dbHandler dbh = new dbHandler(this);
    dbh.open();
    items=new Faculty();
    JSONObject JSONestimate = new JSONObject();
    myarray = new JSONArray();
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.rec);
    final FacultyAdapter facultyAdapter = new FacultyAdapter(this,dbh.display());
    recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
    recyclerView.setAdapter(facultyAdapter);
    dbh.close();

    for (int i = 0; i < facultyAdapter.getItemCount(); i++) {

        try {
            JSONestimate.put("name:" + String.valueOf(i + 1), facultyAdapter.getJSONObject());
            myarray.put(facultyAdapter.getJSONObject());

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    Log.d("JSONobject: ", JSONestimate.toString());
    Log.d("JSONArray : ", myarray.toString());


    Add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
            StringRequest stringRequest=new StringRequest(Request.Method.GET, url, new 
            Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.d("onResponse", "o");
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d("onErrorResponse", "o");
                }
            }){
                @Override
                public Map<String,String> getParams(){
                    Map<String,String> params=new HashMap<>();
                  params.put("jsonarray",myarray.toString());
                    return  params;

                }
            };
            queue.add(stringRequest);
            Toast.makeText(cart.this,"success",Toast.LENGTH_SHORT).show();
        }
    });
   }}

我用邮递员程序检查了 php 代码,它工作正常。

addpost.php

         <?php
    if($_SERVER['REQUEST_METHOD']=='GET'){

require_once('dbConnect.php');

$name = $_GET['name'];
$price= $_GET['price'];
$id = $_GET['id'];

$response = array();
$server_ip = gethostbyname(gethostname());
$sql = "INSERT INTO tblcart (id,name,price) VALUES ('$id','$name','$price')";   
try {
    if (mysqli_query($cnn,$sql)) {
        $response = "done";
    }else{
    $response = "error";
    }
} catch (Exception $e) {
        $response = "error";
} 
echo $response;
  }
   ?>    

【问题讨论】:

  • var_dump($_GET);放在PHP代码的顶部,看看你得到了什么。
  • @JayBlanchard 但并没有解决问题
  • 它不应该解决问题,它应该让我们看看你在 PHP 代码中得到了什么。它返回了什么?
  • @JayBlanchard 表中没有要返回的值,但是当我手动添加值时,它会显示现有值。

标签: php android android-volley


【解决方案1】:

如果你想在你的电脑上运行android virtual decive,url应该改为""http://10.0.2.2/test/addpost.php"。如果你使用"localhost",android虚拟设备会自己访问。我昨天也遇到过这种情况。 希望有用!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
  • 2017-01-26
相关资源
最近更新 更多