为什么我的改造代码没有在数据库中插入数据?

时间:2019-07-13 16:46:55

标签: android wcf retrofit2

为什么我的改装代码无法在数据库中插入数据?我在iis上发布了wcf服务,当我在浏览器中传递参数时,它运行良好。

这是我的界面代码:

interface ApiInterface {

@POST("client")
Call<client>insert(@Body client cl);
}

这是我的模特班:

 public client(String name, String contact, String addres) {
    this.name = name;
    this.contact = contact;
    this.addres = addres;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

这是主要活动:

    textname = (EditText) findViewById(R.id.name);
    textcontact = (EditText) findViewById(R.id.contact);
    textpssword = (EditText) findViewById(R.id.password);
    Button btn = findViewById(R.id.send);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            client cl=new client(textname.getText().toString(),

textcontact.getText().toString(),textpssword.getText().toString());
            sendNetworkrequest(cl);
        }
    });

}

private void sendNetworkrequest(client cl){

    Retrofit.Builder builder=new 


 Retrofit.Builder().baseUrl("http://192.168.1.20/Service1.svc/").
 addConverterFactory(GsonConverterFactory.create());
    Retrofit retrofit=builder.build();

    ApiInterface apiInterface=retrofit.create(ApiInterface.class);
    Call<client> call=apiInterface.insert(cl);
    call.enqueue(new Callback<client>() {
        @Override
        public void onResponse(Call<client> call, Response<client> 
 response) {
            Toast.makeText(MainActivity.this,"compl 
 inserted",Toast.LENGTH_LONG).show();
        }

        @Override
        public void onFailure(Call<client> call, Throwable t) {
            Toast.makeText(MainActivity.this, "some thing went wrng", 
Toast.LENGTH_SHORT).show();
        }
    });

我可以传递baseurl的写入格式吗?

这在浏览器中正常工作

http://192.168.1.20:8080/Service1.svc/insert?name=mehmood&contact=123&addres=lahore 

是本地发布的地址。 insert是wcf服务中定义的函数。

1 个答案:

答案 0 :(得分:0)

您的示例请求(http://192.168.1.20:8080/Service1.svc/insert?name=mehmood&contact=123&addres=lahore)使用查询参数发送字段。但是您的Retrofit定义似乎将您的参数放入了请求正文中。

如果您的服务在POST请求中接受查询参数,则您需要执行以下操作:

@POST("/insert")
Call<client> insert( 
    @Query("name") String name, 
    @Query("contact") String contact, 
    @Query("addres") String addres
);

发布带有查询参数的内容似乎很奇怪,但也许您有充分的理由4。

顺便说一句,您实际上会将客户端对象作为返回类型,这不是请求类型。

然后将客户端重命名为“客户端”。我很讨厌一个书呆子;)