Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用HttpURLConnection从PHP检索到Android类的变量_Php_Android_Httpurlconnection - Fatal编程技术网

使用HttpURLConnection从PHP检索到Android类的变量

使用HttpURLConnection从PHP检索到Android类的变量,php,android,httpurlconnection,Php,Android,Httpurlconnection,这里是我正在使用的代码的一个更新,总共减去了一些不相关的东西,比如微调器按钮意图。也许你能更清楚地看到我做错了什么 我的php我应该注意,我是新的编码,这是我第一次尝试从mysql下载PDO。我可以使用PDO上传。看起来它做得不错,但在这一点上我说不出来,因为它正在崩溃 非常感谢你的帮助 <?php require("conn.php"); $ID = ["ptID"]; try{ $sql = 'SELECT x FROM table WHERE ID = :ID';

这里是我正在使用的代码的一个更新,总共减去了一些不相关的东西,比如微调器按钮意图。也许你能更清楚地看到我做错了什么

我的php我应该注意,我是新的编码,这是我第一次尝试从mysql下载PDO。我可以使用PDO上传。看起来它做得不错,但在这一点上我说不出来,因为它正在崩溃

非常感谢你的帮助

 <?php
  require("conn.php");

 $ID = ["ptID"];

 try{
 $sql = 'SELECT x FROM table WHERE ID = :ID';
 $stmt = $conn->prepare($sql);
 $stmt->execute(array('ptID'=> $ID));
 $posts = $stmt->fetchALL();

 $result = mysql_query($conn, $sql);

 if ($row = mysql_fetch_assoc($result) > 0)
 {

$row = mysqli_fetch_assoc($result);
$x = $row["x"];

 }

 catch(PDOException $e) {
 echo $sql . "<br>" . $e->getMessage();
 $conn = null;

 ?>

这是我的活动课测试

 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.net.Uri;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.Button;
 import android.widget.Spinner;
 import android.widget.TextView;
 import android.widget.Toast;

 public class cervicaltest extends AppCompatActivity implements 
 AdapterView.OnItemSelectedListener {

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

 //whole bunch of spinners, to collect user input all of which functions. 
 tests prior to adding the code to get data worked find.


 }
 //gets the key to the database for the upload.
 private void useID() {
    SharedPreferences shareID = getSharedPreferences("shareID", Context.MODE_PRIVATE);
    ptID = shareID.getString("ID", "");

}

 public void settest() {
 //bunch of if else statements using the user input.  all of which worked 
 prior to trying to get data.
}

 // both of these were left blank as I never used them.
 @Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {

}

//this is the get data class.

 public void getrot() {

gettype ="getcrom";
downloadbackgroundworker Downloadbackgroundworker = new downloadbackgroundworker(this, new downloadbackgroundworker.AsyncResponse() {
    @Override
    public void processfinish(String response) {
        rcervrot = response;
    }
});
    Downloadbackgroundworker.execute(gettype, ptID);
 }

 public void testsaveClick(View view) {

 x = x.getSelectedItem().toString();

    type = "testdb";
    useID();
    getrot();

    BackgroundWorker backgroundWorker = new BackgroundWorker(this);
    backgroundWorker.execute(type, ptID, x //bunch of variables);


   // Rcervicalticcalcu(); these were marketed out intents that I had used to get data previously but didn't like the            result.  all the code worked, but I kept getting kicked to this activity with the intent and I didn't want to            end up at this activity.  Everything worked good when transfering data as an intent.  So somehow it's getting           the data from the database that is crashing me.  all the code for the intents is marked out.
    //Lcervicalticcalcu();
    settest();
 }
 }
导入android.content.Context;
导入android.content.Intent;
导入android.content.SharedReferences;
导入android.net.Uri;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.Toast;
公共类cervicaltest扩展了活动实现
AdapterView.OnItemSelectedListener{
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_测试);
//一大堆微调器,收集用户输入的所有功能。
添加代码以使数据正常工作之前的测试将找到。
}
//获取用于上载的数据库的密钥。
私有void useID(){
SharedReferences shareID=GetSharedReferences(“shareID”,Context.MODE\u PRIVATE);
ptID=shareID.getString(“ID”,即“”);
}
公共无效设置(){
//使用用户输入的一堆if-else语句。所有这些语句都有效
在尝试获取数据之前。
}
//这两个都是空白的,因为我从未使用过它们。
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
//这是get数据类。
公共无效getrot(){
gettype=“getcrom”;
downloadbackgroundworker downloadbackgroundworker=new downloadbackgroundworker(这是new downloadbackgroundworker.AsyncResponse(){
@凌驾
公共void processfinish(字符串响应){
rcervrot=响应;
}
});
Downloadbackgroundworker.execute(gettype,ptID);
}
公共void testsaveClick(查看){
x=x.getSelectedItem().toString();
type=“testdb”;
useID();
getrot();
BackgroundWorker BackgroundWorker=新的BackgroundWorker(此);
execute(类型,ptID,x//一组变量);
//Rcervicalticcalcu();这些都是我以前用来获取数据但不喜欢结果的销售意向。所有的代码都工作了,但我一直被踢到这个活动中,我不想以这个活动结束。当作为意向传输数据时,一切都很好。所以不知怎的,它得到了数据库中的数据正在使我崩溃。所有的意图代码都已标记出来。
//lServiceticCalcuc();
settest();
}
}
最后,这是getdata的downloadworker类。上传backgroundworker之前工作得很好,我没有对其进行任何更改

这是downloadworker类

 import android.app.AlertDialog;
 import android.content.Context;
 import android.os.AsyncTask;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLEncoder;


 public class downloadbackgroundworker extends AsyncTask<String, Void, String> {

AlertDialog downloadalert;
Context dlctx;
downloadbackgroundworker (Context dlctx, AsyncResponse asyncResponse) {
    this.dlctx = dlctx;
    delegate = asyncResponse;
}

@Override
protected void onPreExecute(){
    downloadalert = new AlertDialog.Builder(dlctx).create();
    downloadalert.setTitle("retrieve Data");

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

    String gettype = params[0];
    String cervrotgeturl = "http://IP/phpfile";
    if(gettype.equals("getcrom"))
    {
        String ID = params[1];
        try {
            URL url = new URL(cervrotgeturl);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            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("ptID", "UTF-8") + "=" + URLEncoder.encode(ID, "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"));
            String response ="";
            String line = "";
            while ((line = bufferedReader.readLine())!=null){
                 response = line;
            }
            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();
            return response;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return null;
}

public AsyncResponse delegate = null;

public interface AsyncResponse {
    void processfinish (String response);
}

@Override
protected void onProgressUpdate(Void... values){
    super.onProgressUpdate(values);
}

@Override
protected void onPostExecute(String response) {
    delegate.processfinish(response);

}
}
导入android.app.AlertDialog;
导入android.content.Context;
导入android.os.AsyncTask;
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.OutputStream;
导入java.io.OutputStreamWriter;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.net.urlcoder;
公共类downloadbackgroundworker扩展异步任务{
AlertDialog下载Alert;
上下文dlctx;
downloadbackgroundworker(上下文dlctx,异步响应异步响应){
this.dlctx=dlctx;
委托=异步响应;
}
@凌驾
受保护的void onPreExecute(){
downloadalert=新建AlertDialog.Builder(dlctx.create();
setTitle(“检索数据”);
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
字符串gettype=params[0];
字符串cervrotgeturl=”http://IP/phpfile";
if(gettype.equals(“getcrom”))
{
字符串ID=参数[1];
试一试{
URL URL=新URL(cervrotgeturl);
HttpURLConnection HttpURLConnection=(HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod(“POST”);
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
OutputStream OutputStream=httpURLConnection.getOutputStream();
BufferedWriter BufferedWriter=新的BufferedWriter(新的OutputStreamWriter(outputStream,UTF-8));
字符串数据=urlcoder.encode(“ptID”,“UTF-8”)+“=”+urlcoder.encode(ID,“UTF-8”);
bufferedWriter.write(数据);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream InputStream=httpURLConnection.getInputStream();
BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream,“iso-8859-1”);
字符串响应=”;
字符串行=”;
而((line=bufferedReader.readLine())!=null){
响应=直线;
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
返回响应;
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
返回null;
}
公共异步响应委托=null;
公共接口异步响应{
void processfinish(字符串响应);
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的void onPostExecute(字符串响应){
public AsyncResponse delegate=null;

public interface AsyncResponse {
    void processFinish(Boolean output);
}

getBackgroundworker (Context ctx, AsyncResponse asyncResponse) {
    this.ctx =ctx;  
    delegate = asyncResponse;
} 

getBackgroundworker(Context ctx)  
{  
    this.ctx =ctx;  
}  

 @Override
 protected void onPostExecute(String result) {
    alertDialog.setMessage(result);
        delegate.processFinish(stuff);
//I am passing the boolean variable here. You can pass accordingly

    }