大家好,我是一名初级php开发人员,我正在将Java代码转换为php ..在Java api上命中并正确获得响应,现在我试图在php中使用curl http post命中这是我在我的软件公司plz中的任务帮我
我要向您展示我的Java代码正确运行,然后我的php代码无法正常工作,并且不解析该API的参数,因此请您指导我
这是我的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:[\"[email protected]\", \"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);
}
}
}
现在我在php上对此进行编码,但是没有得到响应检查它,并指导我我使用curl http post和getApiToken方法帮助我解决这个问题,我非常紧张。
这是我的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;
?>
您正在从Java代码发布JSON。因此也可以在PHP上使用json(确保格式正确):
$payload = "{params}";
卷曲选项将是
// 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);
使用这些,我得到了示例响应:
{"id":"1","result":"results"}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句