Utilizzo di JSON in una richiesta HTTP "GET".Sto lavorando per interfacciarmi con il nostro motore di recupero dati.Posso inviare un lavoro perfettamente bene utilizzando una richiesta POST come questa:
richiesta = Nuova richiesta HTTP(
url( "http://fc8tdbitmapconvs07:11111/daas/" ),
Metodo( "POST" ),
Json( Carica file di testo( ctfn ) )
);
dati = richiesta << Invia;
'data' contiene la risposta dal server e tutto va bene.
--------------------------------------------
Tuttavia, quando provo a controllare lo stato del lavoro in esecuzione con una richiesta "GET", il json non viene incluso nella richiesta HTTP al server:
Tentativo n. 1:
request2 = Nuova richiesta HTTP(
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
Metodo( "OTTIENI" ),
headers( {"Content-Type:application/json"} ), // aggiungi le tue intestazioni personalizzate
Json( Carica file di testo( ctfn2 ) )
);
dati2 = richiesta2 << Invia;
Tentativo #2
request2 = Nuova richiesta HTTP(
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
Metodo( "OTTIENI" ),
headers( {"Content-Type:application/json"} ) // aggiungi le tue intestazioni personalizzate
);
request2 < dati2 = richiesta2 << Invia;
In entrambi i casi il JSON non viene caricato.Le informazioni di intestazione arrivano al server correttamente, ma il punto in cui dovrebbe trovarsi il JSON nella richiesta è vuoto.Cosa mi manca?
Grazie
Oggetto: Utilizzo di JSON in una richiesta HTTP "GET".Questa funzione (utilizzando "GET" durante l'invio di JSON) dovrebbe essere disponibile in JMP 15.
Oggetto: Utilizzo di JSON in una richiesta HTTP "GET".Un'ultima cosa (o 2).il numero di lavoro, ecc. può essere passato come parametro della stringa di query (o anche JSON può essere incorporato nell'intestazione della richiesta)
e 2, assicurati di aggiungere il get con un "corpo" alla lista dei desideri.In questo modo possiamo tenerne traccia e puoi essere avvisato quando è lì.
Grazie.
-Bryan
Oggetto: Utilizzo di JSON in una richiesta HTTP "GET".Brion,
Grazie per la rapida risposta.Sto lavorando direttamente con lo sviluppatore per l'API REST e impacchettare il JSON in una richiesta GET è il loro modo documentato di richiedere dati.Hai ragione sul fatto che le specifiche non sono chiare e il confezionamento di JSON in una richiesta GET è ciò che viene insegnato in alcuni programmi di studio CS.In questo caso l'idea è di passare un numero di lavoro che restituirà un codice che indica che il lavoro non è ancora completo (sondaggio e risposta) o un codice che indica che è completo, i nomi dei file di dati e un file zip contenente questi file .Se potessi ottenere qualcosa in JMP 15 sarebbe molto utile.
Oggetto: Utilizzo di JSON in una richiesta HTTP "GET".Dopo aver letto le specifiche HTTP, vedo che l'invio di dati con un GET è sconsigliato e che i server di solito lo ignorano.
Ho trovato questa discussione su StackOverflow, che si collega alle relative specifiche HTTP.
Questa affermazione è corretta? Il metodo HTTP GET non ha sempre il corpo del messaggio
Fondamentalmente fa bollire alcune implementazioni di servizi web personalizzati che potrebbero usarlo e le specifiche sono piuttosto nebulose al riguardo.
Forse posso ottenere qualcosa per JMP 15 se esiste ancora la necessità.
Ci sono altre strade per interagire con questo servizio?
Oggetto: Utilizzo di JSON in una richiesta HTTP "GET".Il JSON è incorporato in un'intestazione della richiesta? (Dropbox, Onedrive e molti altri lo fanno)
L'argomento JSON nella richiesta HTTP utilizzato in un POST/PATCH/PUT in cui il contenuto viene inviato con il tipo di contenuto JSON.È un'azione di "invio".
GET sono "letti" e gli argomenti sono stringhe di query o incorporati in un'intestazione di richiesta.
Oggetto: Utilizzo di JSON in una richiesta HTTP "GET".bryan_boone,
Grazie per la pronta risposta. Secondo lo sviluppatore che ha scritto il file
API REST è richiesto il JSON. Ecco la versione funzionante in Python
stato_info = ottieni(
'http://fc8tdbitmapconvs07:11111/daas/status/',
json={'_id': '5cc311a97925b1000ce4fd54', 'include_complete':
VERO}
).json()
>> il numero lungo in rosso è il numero del lavoro che ovviamente varia. Questo
bit funziona bene in esecuzione in un notebook python o in esecuzione all'interno di JMP utilizzando il file
seguendo JSL. Ma come faccio a farlo funzionare con il protocollo di richiesta HTTP?
Grazie!
-------------------------------------------------- -------------------------------------------------- -------------------------
Python Init();
Python Esegui(
{X},
{stato_info},
"
importare getpass
da io import BytesIO
dal tempo importa il sonno
importa panda come pd
from request import get, post
stato_info = ottieni(
'http://fc8tdbitmapconvs07:11111/daas/status/',
json={'_id': '5cc311a97925b1000ce4fd54', 'include_complete':
VERO}
).json()
"
);
Termine Python();
Oggetto: Utilizzo di JSON in una richiesta HTTP "GET"."OTTENERE"
e "POSTA"
sono due diversi metodi di richiesta HTTP ( https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods )
"GET" in genere legge i dati da un server while
"Post" in genere invia i dati a un server.
Si tratta di server Web/servizi Web definiti al di fuori di JMP/JSL
Nel tuo primo esempio, stai inviando "POST" (ovvero inviando) i dati a "http://fc8tdbitmapconvs07:11111/daas/" e comunicando al servizio che ctfn è il contenuto JSON da utilizzare.
In Tentativo n. 1, l'obiettivo è "OTTENERE" lo stato di un lavoro in esecuzione. Non sono sicuro di quale sia il servizio, ma se l'endpoint è "http://fc8tdbitmapconvs07:11111/daas/status/", allora vorresti qualcosa del tipo:
request2 = New HTTP Request(
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
Method( "GET" )
);
data2 = request2 << Send;
Dal momento che non invieresti nulla al server in un GET.
Inoltre, "Content-Type:application/json" viene utilizzato per descrivere il contenuto che stai inviando (non proprio appropriato in un GET poiché stai ricevendo dati e probabilmente ignorato dal server web)
Tipo di contenuto: le intestazioni sono ciò che stai inviando (queste vengono impostate automaticamente dalla richiesta HTTP)
Accettare: le intestazioni sono ciò che dici al server web che desideri.
request << Get MIME Type
ti dirà cosa ha inviato il server web. (la maggior parte dei server Web lo imposta, ma può essere vuoto)
Tieni presente anche che dopo ogni
request << Send
Tu puoi fare
request << Get Status; //this is the http status code
request << Get Status Message; //this is the message from the server
per indagare su qualsiasi messaggio di errore emesso dal servizio Web.
HTH