简体   繁体   English

点击Api并使用http发布和curl获取响应

[英]Hit Api and get Response using http post and curl

Hello every one i am a junior php developer i am working on converting java code to php.. on Java api hit and get response correctly and now i am trying to hit using curl http post in php this is my task in my software house plz help me 大家好,我是一名初级php开发人员,我正在将Java代码转换为php ..在Java api上命中并正确获得响应,现在我试图在php中使用curl http post命中这是我在我的软件公司plz中的任务帮我

i am gonna show you my java code which is correctly working and then my php code which is not working and not parsing params to that api so pls kindly guide me 我要向您展示我的Java代码正确运行,然后我的php代码无法正常工作并且不解析该API的参数,因此请您指导我

This is my Java Code This is working correctly i want to do this same work from php 这是我的Java代码,它工作正常,我想从php做同样的工作

import java.io.*;

import java.util.jar.JarException;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.*;

class MyCode{

            public static void main(String[] args) throws JarException, JSONException
            {

                        testCustomerApiIsExposed();

            }


            public static void testCustomerApiIsExposed() throws JarException, JSONException {

               try {

                   @SuppressWarnings("deprecation")

                   HttpClient c = new DefaultHttpClient();

                   HttpPost p = new
                   HttpPost("http://link");



                    String payload = "{id:\"" + 1 + "\","  + "method:\"" + "customerApi.getApiToken" + "\", params:[\"teabonezenminddemo1partner@gmail.com\", \"demo1234!\", \"\", \"\", \"\",     \"\", \"\", false, \"\", \"\"" + "]}";

                   String mimeType="";

                   /*There is something here. What constructor are we really calling here? */

                   // p.setEntity(new StringEntity( payload,ContentType.create("application/json")));

                                    p.setEntity(new StringEntity(payload));



                   HttpResponse r = c.execute(p);



                   BufferedReader reader = new BufferedReader(new InputStreamReader(r.getEntity().getContent(), "UTF-8"));

                   StringBuilder builder = new StringBuilder();

                   for (String line = null; (line = reader.readLine()) != null;) {

                       builder.append(line).append("\n");

                   }

                   JSONTokener tokener = new JSONTokener("[" + builder.toString() + "]");

                   JSONArray finalResult = new JSONArray(tokener);

                   JSONObject o = finalResult.getJSONObject(0);


                   //Getting names of the JSON object here
                   System.out.println(o.names());

                   String apiToken = (String) o.get("result");


                   System.out.println(apiToken);

               }

               catch(IOException e) {

                   System.out.println(e);

               }

            }
}

now i am coding this on php but don't get response check it pls and guide me i am using curl http post and getApiToken method help me to sort out this problem i am very tense. 现在我在php上对此进行编码,但是没有得到响应检查它并指导我我使用curl http post和getApiToken方法帮助我解决这个问题,我非常紧张。

This is my php code 这是我的PHP代码

<?php

$data = array(params);

$ch = curl_init('http://link');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
echo $result;
?>

You are posting JSON from your java code. 您正在从Java代码发布JSON。 So use json here at PHP as well(make sure the format is ok): 因此也可以在PHP上使用json(确保格式正确):

$payload = "{params}";

And the curl options will be 卷曲选项将是

// as you are posting JSON, so tell server that you are sending json
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));

// Let server know that you are doing HTTP POST request
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);

Using these, I got sample response: 使用这些,我得到了示例响应:

{"id":"1","result":"results"}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM