使用HttpPost对象发送值

时间:2014-07-13 10:06:30

标签: php android

我想将一个值发送到网址的末尾。

前:

如果我有id=1;,我想将此ID发送到我的网址末尾(获取ID):

  

www.example.com/get/id

id值不同。 (例如:ID = 2,ID = 3,ID = 4 ...)

有可能吗?如何在此场景中使用HttpPost?

我正在使用这些功能,但我总是收到此消息:

  

没有发现参数!

在我的网址中:

www.example.com/get/id:

function get($id=0){

$id = (int)$id;
if(!$id) exit("no parametrs was sended !");

$trac  = $this->m_general->get('tractions' , array('id' => $id ) , true );



if(!$trac ) $resp = "-1";
else
if($trac->expired != 0  ||   $trac->cradit_end_date < date('Y-m-d'))
{
    $resp = 0;
}else
$resp = 1;

echo json_encode(array('response'=>$resp));

}


function set(){

    $data = $this->input->post('data');
    if(!$data) exit("no parametrs was sended !");


    $message = $data;
    $message = substr($message,7,-6);
    list($qr,$date,$time) = explode("&",$message);

    $insert = array(
    'qr'=>$qr ,
    'date'=>$date ,
    'time'=>$time ,
    'main'=>$message
    );

    $this->m_general->add('qr' , $insert );

}


private void postData(String valueIWantToSend) {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(this.url_server_side);
    HttpResponse response = null;
    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("data", valueIWantToSend));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        response = httpclient.execute(httppost);
        String res = EntityUtils.toString(response.getEntity());
        Log.e("Response = ", res);

        isok = 1 ;

    } catch (ClientProtocolException e) {
        e.printStackTrace();
        // TODO Auto-generated catch block
        isok = -1 ;
    } catch (IOException e) {
        e.printStackTrace();
        // TODO Auto-generated catch block
        isok = -1 ;
    }
    //Log.e("res", response.toString()) ;
}

1 个答案:

答案 0 :(得分:1)

如上所述,您的Web应用程序期望GET方法传递变量。在java代码中,您正在发送POST请求。您应该使用GET方法传递数据。

String url = "http://www.example.com/id/YOUR_ID_DATA/data/YOUR_DATA";

HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);

// add request header
request.addHeader("User-Agent", USER_AGENT);
HttpResponse response = client.execute(request);

BufferedReader rd = new BufferedReader(
    new InputStreamReader(response.getEntity().getContent()));

StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
    result.append(line);
}

或者在POST请求中发送id,数据并从PHP端接受POST响应。

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.example.com");
HttpResponse response = null;
try {
    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("id", YOUR_ID_DATA));
    nameValuePairs.add(new BasicNameValuePair("data", YOUR_DATA));
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

然后在PHP Side

$id = $_POST["id"];
$data = $_POST["data"];