Php 改型2服务器未接收POST Android
我使用改型2从PHPAPI获取一些数据。服务器收到呼叫,但是,$\u POST为空 我尝试用各种方式发送数据,但还是没有成功 下面是PHPAPI示例Php 改型2服务器未接收POST Android,php,android,api,retrofit2,Php,Android,Api,Retrofit2,我使用改型2从PHPAPI获取一些数据。服务器收到呼叫,但是,$\u POST为空 我尝试用各种方式发送数据,但还是没有成功 下面是PHPAPI示例 <?php $token = $_POST["api_token"]; $myObj = new stdClass(); $myObj -> api_token = $token; $jsonObj = json_encode($myObj); echo $jsonObj; ?> 另外,这是响应类Res
<?php
$token = $_POST["api_token"];
$myObj = new stdClass();
$myObj -> api_token = $token;
$jsonObj = json_encode($myObj);
echo $jsonObj;
?>
另外,这是响应类ResponseTester
import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Headers;
import retrofit2.http.POST;
public interface ClientTester {
@Headers({"Content-Type: application/json;charset=UTF-8"})
@POST("/****/****.php")
Call<ResponseTester> postParams(
@Body Map<String, String> requestBody);
}
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class ResponseTester {
@Expose
@SerializedName("api_token")
private String apiToken;
public String getApiToken() {
return apiToken;
}
public void setApiToken(String apiToken) {
this.apiToken = apiToken;
}
}
和我的请求函数
private void sendRequest() {
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl("https://****.com")
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.build();
ClientTester ClientTester = retrofit.create(ClientTester.class);
Call<ResponseTester> call = ClientTester.postParams(getBodyParams());
call.enqueue(new Callback<ResponseTester>() {
@Override
public void onResponse(Call<ResponseTester> call, Response<ResponseTester> response) {
Log.d("VolleyResponse", "onResponse: " + response.body().getApiToken());
tvResponse.setText(response.body().getApiToken()+"...");
}
@Override
public void onFailure(Call<ResponseTester> call, Throwable t) {
Log.d("VolleyResponse", "onFailure: " + t.toString());
tvResponse.setText(t.toString());
}
});
private Map<String, String> getBodyParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("api_token", "SomeToken");
return params;
}
private void sendRequest(){
reformation.Builder=新的reformation.Builder()
.baseUrl(“https://**.com”)
.addConverterFactory(GsonConverterFactory.create());
改装改装=builder.build();
ClientTester ClientTester=reformation.create(ClientTester.class);
Call Call=ClientTester.postParams(getBodyParams());
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
Log.d(“截击响应”,“onResponse:+response.body().getApiToken());
tvResponse.setText(response.body().getApiToken()+“…”);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.d(“截击反应”,“onFailure:+t.toString());
tvResponse.setText(t.toString());
}
});
私有映射getBodyParams(){
Map params=新的HashMap();
参数put(“api_标记”、“SomeToken”);
返回参数;
}
不幸的是,response.body().getApiToken()
返回空值
顺便说一下,我尝试了其他解决方案,比如,
编辑
我的问题是android应用程序,由于API与iOS应用程序和API测试人员配合良好,此解决方案无法解决我的问题,因为它需要更改API代码
在代码中,内容类型设置为
application/json
@Headers({"Content-Type: application/json;charset=UTF-8"})
@POST("/****/****.php")
Call<ResponseTester> postParams(
@Body Map<String, String> requestBody);
在代码中,内容类型设置为
application/json
@Headers({"Content-Type: application/json;charset=UTF-8"})
@POST("/****/****.php")
Call<ResponseTester> postParams(
@Body Map<String, String> requestBody);
$\u JSON
?我想你的意思是那里的$\u POST
。我刚刚尝试了你的解决方案,效果非常好,我唯一关心的是我没有制作API,这只是一个示例,有没有办法从android代码本身解决这个问题?@CBroe是的,你是对的,这是一个输入错误,我会编辑我的awnser@Joseph阿里,如果你移除t他@Headers({…})ClientTester
中的注释应在不更改API@JosephAli我编辑了我的awnser来更好地解释它$\u JSON
?我想你的意思是$\u POST
。我刚刚尝试了你的解决方案,它工作得非常好,我唯一关心的是我没有制作API,这只是一个示例,有没有办法从android代码本身解决这个问题?@CBroe是的,你是对的,这是一个打字错误,我会编辑我的awnser@Joseph如果删除@Headers({…}),则返回AliClientTester
中的注释应在不更改API@JosephAli我编辑了我的awnser以更好地解释它。这是否回答了你的问题?不幸的是,没有。我的问题是android应用程序,因为API与iOS应用程序和API测试程序配合良好,此解决方案可能会解决我的问题,但它需要更改API代码!是吗这回答了你的问题吗?不幸的是,没有。我的问题是android应用程序,因为API在iOS应用程序和API测试程序中运行良好,这个解决方案可能会解决我的问题,但它需要更改API代码!