Я застрял в написании клиентского кода retfoit2 для попадания в какой-то очень старый perl устаревший код на сервере.
код сервера в perl
my $CFG = do "config.pl";
my $db_handle = DBI->connect ("DBI:mysql:$CFG->{database}", $CFG->{user}, $CFG->{password}, { RaiseError => 1 } );
my $cgi = CGI->new;
my $decdata = decode_json($cgi->param('POSTDATA'));
my $type = $decdata->{'Type'};
if ($type eq "ADD"){
my $ProductID = $decdata->{'ProductID'};
my $VariantID = $decdata->{'VariantID'};
my $MRP = $decdata->{'MRP'};
my $SellPrice = $decdata->{'SellPrice'};
my $barCode = $decdata->{'barCode'};
my $sql_query = qq (insert into table_product_varients values (?, ?, ?, ?, ?, NULL, 1, NOW(), NOW()));
my $statement = $db_handle->prepare ($sql_query);
$statement->execute($ProductID, $VariantID, $barCode, $MRP, $SellPrice);
}
elsif ($type eq "UPDATE"){
my $ProductID = $decdata->{'ProductID'};
my $VariantID = $decdata->{'VariantID'};
my $MRP = $decdata->{'MRP'};
my $SellPrice = $decdata->{'SellPrice'};
my $barCode = $decdata->{'barCode'};
my $sql_query = qq (UPDATE table_product_varients set product_mrp = ?, product_sellprice = ?, barcode = ? WHERE product_id = ? and varient_id = ?);
my $statement = $db_handle->prepare ($sql_query);
$statement->execute($MRP, $SellPrice, $barCode, $ProductID, $VariantID);
}
Код модернизации
@FormUrlEncoded
@POST("cgi-bin/ProductVariantQuery.pl")
public Call<String> updateProductVariant(@Field("POSTDATA") String jsonObject);
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("Type", "UPDATE");
jsonObject.put("ProductID", ProductID);
jsonObject.put("VariantID", VariantID);
jsonObject.put("MRP", mrp.toString());
jsonObject.put("SellPrice", sellPrice.toString());
} catch (JSONException e) {
e.printStackTrace();
}
Call<String> call = restInterface.updateProductVariant(jsonObject.toString());
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call , Response<String> response) {
//APIResponse apiResponse = response.body();
//Utility.displayToast(apiResponse.getMessage());
Utility.displayToast("Updated!");
productVariant.setMRP(mrp);
productVariant.setSellPrice(sellPrice);
notifyDataSetChanged();
}
@Override
public void onFailure(Call<String> call , Throwable t) {
//loading.dismiss();
Utility.displayToast("some error");
}
});
Я попробовал внести несколько изменений, но увидел одну или другую ошибку.
С помощью приведенного выше кода я получаю исключение JAVAEOF.
Что может быть не так? указатель муравья приветствуется.