Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa.

  • 36 odgovora
  • 11.391 pregleda

Najnovija ↓

Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 05.03.2020. u 14:17 · pre 81 mesec #1
Klijent je java program i preko REST(post metode) treba da upise odredjeni input na veb server.
Server stalno vraća odgovor:
{"status":200,
"status_message":"ws dostupan",
"response":{
"code":"0", "msg":"Nesipravan broj elemenata JSON zahteva"}}

a moj testni input je
String input = "{"
+ "\"idZu\":11111111,"
+ "\"user\":\"ooooooo\","
+ "\"pass\":\"lllllllllll\","
+ "\"type\":1,"
+ "\"MB\":\"11111111\","
+ "\"PIB\":\"222222222\","
+ "\"JBBK\":\"88888\","
+ "\"MBZu\":\"3333333\","
+ "\"PIBZu\":\"4444444\","
+ "\"datumUgovora\":\"15.01.2020\","
+ "\"brojUgovora\":\"01-43/19-218/1\","
+ "\"brojOkvirnogSporazuma\":\"101-3/19\","
+ "\"kpp\":\"078\","
+ "\"iznosUgovoraBezPDV\":1000.00,"
+ "\"iznosPDV\":100.00,"
+ "\"iznosUgovoraSaPDV\":1100.00"
+ "}";
U dokumentaciji ima 16 obaveznih parametara metoda , toliko imam i u inputu i sva polja sa leve strane su ispravno napisane.
Molim za neku sugestiju gde grešim.
Hvala
Re: Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 05.03.2020. u 14:52 · pre 81 mesec #3
U tvom kodu su neke vrednosti bez navodnika, što je OK ako su numerici, ali nije OK ako se očekuje String.
I obratno. MB ti je na primer u navodnicima, kao da je String a možda se očekuje numerička vrednost.

Da li u dokumentaciji imaš decidno šta je String a šta je numerik?
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Re: Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 05.03.2020. u 14:58 · pre 81 mesec #4
JSON je OK, uredno se parsuje

{
"idZu": 11111111,
"user": "ooooooo",
"pass": "lllllllllll",
"type": 1,
"MB": "11111111",
"PIB": "222222222",
"JBBK": "88888",
"MBZu": "3333333",
"PIBZu": "4444444",
"datumUgovora": "15.01.2020",
"brojUgovora": "01-43/19-218/1",
"brojOkvirnogSporazuma": "101-3/19",
"kpp": "078",
"iznosUgovoraBezPDV": 1000.0,
"iznosPDV": 100.0,
"iznosUgovoraSaPDV": 1100.0
}
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Re: Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 05.03.2020. u 15:34 · pre 81 mesec #5
Ovo je deo uputstva koji se odnosi na odredjeni input.
Obavezni parametri metode su:
a) idZu – INT, matični broj dobavljača.
b) user – korisničko ime dobavljača.
c) pass – lozinka dobavljača
d) type – INT, vrsta ugovora sa mogućim vrednostima: 1 – za osigurana lica RFZO ili 2 – za ostala lica.
e) MB – VARCHAR, matični broj dobavljača.
f) PIB – VARCHAR, poreski identifikacioni broj dobavljača.
g) JBBK – VARCHAR, jedinstveni broj budžetskog korisnika dobavljača (ukoliko je dobavljač budžetski korisnik).
h) MBZu – VARCHAR, matični broj zdravstvene ustanove.
i) PIBZu – VARCHAR, poreski identifikacioni broj zdravstvene ustanove.
j) datumUgovora – VARCHAR, format dd.mm.YYYY (primer 31.12.2018), datum ugovora između zdravstvene ustanove i dobavljača.
k) brojUgovora – VARCHAR, broj ugovora između zdravstvene ustanove i dobavljača.
l) brojOkvirnogSporazuma – VARCHAR, broj okvirnog sporazuma između zdravstvene ustanove i dobavljača.
m) kpp – VARCHAR, ugovorena naknada sa zdravstvenom ustanovom (KPP iz šifarnika RFZO).
n) iznosUgovoraBezPDV – DECIMAL, (KORISTITI TAČKU ZA DECIMALNI UNOS) iznos ugovora bez PDV-a.
o) iznosPDV – DECIMAL, (KORISTITI TAČKU ZA DECIMALNI UNOS), iznos PDV-a.
p) iznosUgovoraSaPDV – DECIMAL, (KORISTITI TAČKU ZA DECIMALNI UNOS) iznos ugovora sa PDV-om.
Re: Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 05.03.2020. u 16:33 · pre 81 mesec #9
Koji endpoint koristis? Ako je ovaj: https://ws.rfzo.rs/Fin/ObavezeUpis onda endpoint je pogresan.
Mislim po dokumentaciji bi trebala da koristis ovaj : https://ws.rfzo.rs/Fin/UgovorUpis

Ali je sve to ovako slepo
npr kada ovaj json posaljem ovde: https://ws.rfzo.rs/Fin/ObavezeUpis dobijem tu gresku
ali kada posaljem ovde: https://ws.rfzo.rs/Fin/UgovorUpis dobijam tacnu gresku "Nepostojeci korisnik"

Re: Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 05.03.2020. u 16:37 · pre 81 mesec #10
Deo oko vaseg JSON, mozda nema veze ali ne nuzno moze da bude posto zavisi kakav je kod njih backend i sta radi oko parsovanja podataka po prijemu zahteva:

Code:

"iznosUgovoraBezPDV": 1000.0,
"iznosPDV": 100.0,
"iznosUgovoraSaPDV": 1100.0


prebaciti u oblike navedenih dole

Code:

"iznosUgovoraBezPDV": "1000.0",
"iznosPDV": "100.0",
"iznosUgovoraSaPDV": "1100.0"


ili

Code:

"iznosUgovoraBezPDV": 1000.00,
"iznosPDV": 100.00,
"iznosUgovoraSaPDV": 1100.00



ili

Code:

"iznosUgovoraBezPDV": "1000.00",
"iznosPDV": "100.00",
"iznosUgovoraSaPDV": "1100.00"


ali takodje proveriti i da li je autentikacija user-a koji vrsi slanje podataka dobro (usr/pwd/api token i sl. sta vec ide za te namene)
Re: Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 05.03.2020. u 16:58 · pre 81 mesec
izmenjeno 1 put, poslednji put caca1 05.03.2020. u 17:09
  1. caca105.03.2020. u 17:09zapis iz teksta poruke
#11
Ovo je kod.

private void prenos() {
try {
URL url = new URL(
"https://ws.rfzo.rs/FinTest/UgovorUpis");
// "https://ws.rfzo.rs/Fin/UgovorUpis");
HttpURLConnection
conn =
(HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);//
conn.setRequestProperty("Content-Type",
"application/json");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestMethod("POST");
String input = "{"
+ "\"idZu\":11111111,"
+ "\"user\":\"ooooooo\","
+ "\"pass\":\"lllllllllll\","
+ "\"type\":1,"
+ "\"MB\":\"11111111\","
+ "\"PIB\":\"222222222\","
+ "\"JBBK\":\"88888\","
+ "\"MBZu\":\"3333333\","
+ "\"PIBZu\":\"4444444\","
+ "\"datumUgovora\":\"15.01.2020\","
+ "\"brojUgovora\":\"01-43/19-218/1\","
+ "\"brojOkvirnogSporazuma\":\"101-3/19\","
+ "\"kpp\":\"078\","
+ "\"iznosUgovoraBezPDV\":1000.00,"
+ "\"iznosPDV\":100.00,"
+ "\"iznosUgovoraSaPDV\":1100.00"
+ "}";
//---zahtev serveru---------------
OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();
os.close();

if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
//---Odgovor servera----------------------------------------------------------------
BufferedReader br = new BufferedReader(
new InputStreamReader(
(conn.getInputStream())));

String output=null;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {

System.out.println(output);
}

br.close();
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
JOptionPane.showMessageDialog(null,e);
//e.printStackTrace();

}

}
Ko inputa su samo pravi podaci zamenjeni .
Re: Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 06.03.2020. u 09:29 · pre 81 mesec #12
nemnesic Posto si vec pretpostavio koji je URL poslala sam ti na pp pravi input, a i vidi se na prethodnom postu metod koji to treba da odradi.
Pa ako mozes probaj da vidimo koju ces ti poruku dobiti. Prvi put radim ovu komunikaciju sa veb serverom pa mislim da negde mozda gresim.
Re: Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 07.03.2020. u 10:43 · pre 81 mesec #14

nemnesic
Nije mi jasan tvoj odgovor. Ja i dalje imam isti odgovor sa veb servisa RFZO. Poslala sam ti pravi input da ti probas da ga prosledis na test veb servis da vidimo da li ti dobijas isti odgovor. U svakom slucaju kada budem saznala gde je problem ovde cu ga i napisati.
Re: Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 07.03.2020. u 13:23 · pre 80 meseci #17
Nemanja
Kada kopiram tvoj input u moj metod prenos() ,gore navedeni, javlja greske.
A poruka koji si ti dobio "Nepostojeci korisnik" je verovatno zato sto je prvo polje int a ne String.
Kao sto si napomenuo, izgleda da ne mogu da ja formatiram u input vec da se to radi na drugi nacin.
Predlozio si da koristim jackson library za formatiranje tako da cu sada to da istrazim jer sve ovo radim prvi put.
Posto si dobio odg od veb servisa "Nepostojeci korisnik" znaci na neki drugi nacin ci prosledio input a ne kao ja preko moje metode prenos()?
Re: Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 07.03.2020. u 14:43 · pre 80 meseci #18
Tacno - nisam koristio tvoj kod i "prenos" metodu. Vec sam koristio postman i direktno POST-ovao json.

Bilo kako bilo moraces da se upoznas kako da koristis neke biblioteke sa pravilno pravljenje json-a. Olaksace ti posao i ne treba da brines da li je formatirano pravilno ili ne.

Ja bi preporucio da napravis java projekat koji koristi neki od alata za upravljanje/izgradnju ("build") projekta - npr maven ili gradle (ja koristim gradle)

Za generisanje maven/java pojekta:
https://maven.apache.org/archetypes/maven-archetype-quickstart/

Za generisanje gradle/java projekta:
https://guides.gradle.org/building-java-applications/

Onda povuces biblioteke koje su ti potrebne lakse (jackson itd)

javi se ako nesto zaglavi
Re: Molim za neku sugestiju za razrešenje problema u komunikaciji java klienta i veb servisa. 07.03.2020. u 21:06 · pre 80 meseci #19
Nemanja
radila sam po tvom prvom predlogu.
Napravila sam klasu Ugovor i onda sam je preko mapper.writeValueAsString(u) prebacila u input i dobila poruku koju si i ti dobio "Nepostojeci korisnik".

public class Ugovor {
private int idZu;
private String user;
.....
public int getIdZu() {
return idZu;
}
public void setIdZu(int idZu) {
this.idZu = idZu;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
.....
}

i onda sam promenila moj testni metod prenos() u
URL url = new URL(
"https://ws.rfzo.rs/FinTest/UgovorUpis");
// "https://ws.rfzo.rs/Fin/UgovorUpis");
HttpURLConnection
conn =
(HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);//
conn.setRequestProperty("Content-Type",
"application/json");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestMethod("POST");
try {
Ugovor u = new Ugovor();

u.setIdZu(1111111);
u.setUser("aaaaa");
...........
ObjectMapper mapper = new ObjectMapper();
String input = mapper.writeValueAsString(u);
OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();
os.close();
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
} catch ......
i javlja poruku {"status":200,"status_message":"WS dostupan","response":{"code":"1","msg":"Nepostojeci korisnik"}}
Po ovoj poruci input je prosledjen veb servisu ali nije prepoznao idZu. Mozda nisu evidentirali mat.br dob. u svojoj bazi da li je to moguce ?
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme