Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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
Php 改型2服务器未接收POST Android_Php_Android_Api_Retrofit2 - Fatal编程技术网

Php 改型2服务器未接收POST Android

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

我使用改型2从PHPAPI获取一些数据。服务器收到呼叫,但是,$\u POST为空

我尝试用各种方式发送数据,但还是没有成功

下面是PHPAPI示例

<?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({…}),则返回Ali
ClientTester
中的注释应在不更改API@JosephAli我编辑了我的awnser以更好地解释它。这是否回答了你的问题?不幸的是,没有。我的问题是android应用程序,因为API与iOS应用程序和API测试程序配合良好,此解决方案可能会解决我的问题,但它需要更改API代码!是吗这回答了你的问题吗?不幸的是,没有。我的问题是android应用程序,因为API在iOS应用程序和API测试程序中运行良好,这个解决方案可能会解决我的问题,但它需要更改API代码!