Pesquisar na Comunidade
Mostrando resultados para as tags ''Web Service''.
Encontrado 7 registros
-
Estou tentando há dias fazer uma requisição de preço e prazo de entrega para o WS dos Correios. Acontece que o meu php não executa de jeito nenhum a requisição, e o pior é que se eu abrir a URL diretamente no navegador, o XML aparece normalmente, e não sei porque motivo o php não consegue "puxar" esse mesmo xml. Vou colocar o código caso alguém queira testar ou verificar se estou fazendo algo errado: Correios.php <?php class Correios { public $nCdEmpresa, $sDsSenha, $servico, $cepOrigem, $cepDestino, $peso, $formato = '1', $comprimento, $altura, $largura, $diametro, $maoPropria = 'N', $valordeclarado = '0', $avisoRecebimento = 'N', $retorno = 'xml'; public function calc() { $cURL = curl_init(sprintf( 'ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrecoPrazo?nCdEmpresa=%s&sDsSenha=%s&nCdServico=%s&sCepOrigem=%s&sCepDestino=%s&nVlPeso=%s &nCdFormato=%s&nVlComprimento=%s&nVlAltura=%s&nVlLargura=%s&nVlDiametro=%s&sCdMaoPropria=%s&nVlValorDeclarado=%s &sCdAvisoRecebimento=%s&StrRetorno=%s HTTP/1.1', $this->nCdEmpresa, $this->sDsSenha, $this->servico, $this->cepOrigem, $this->cepDestino, $this->peso, $this->formato, $this->comprimento, $this->altura, $this->largura, $this->diametro, $this->maoPropria, $this->valordeclarado, $this->avisoRecebimento, $this->retorno )); // Define a opção que diz que você quer receber o resultado encontrado curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); // Executa a consulta, conectando-se ao site e salvando o resultado na variável $string $string = curl_exec($cURL); // Encerra a conexão com o site curl_close($cURL); $xml = simplexml_load_string($string); if ($xml->Erro != '') { $this->error = array($xml->cServico->Erro, $xml->cServico->MgsErrro); return false; } else { return $xml; } } public function error() { if (is_null($this->error)) { return false; } else { return $this->error; } } } Agora o Script que estou chamando para testar a requisição e não funciona: $frete = new Correios(); $frete->servico = "04510"; // 04510 para PAC e 04014 para SEDEX $frete->cepOrigem = "82220020"; $frete->cepDestino = "08090284"; $frete->peso = "0.5"; $frete->comprimento = "50"; $frete->altura = "5"; $frete->largura = "20"; $frete->diametro = "0"; $calc = $frete->calc(); if (!$calc) { $error = $frete->error(); echo $error[1]; } else { var_dump($calc); } Já habilitei o curl no php.ini e testei em uma hospedagem, continua não me retornando nada
-
Eu criei duas classes customizadas de acordo com o que foi orientado por meu professor para fazer a requisição no servidor, mas estou recebendo um retorno 400 e não consigo descobrir a razão. Pesquisando, vi que pode ser algo relacionado ao cabeçalho, mas não sei como enviá-lo na minha requisição JSon customizada. Este é o código do meu do meu código customizado para requisição de JsonObject: package com.example.sandrini.pokeagenda; import com.android.volley.AuthFailureError; import com.android.volley.Response; import com.android.volley.RetryPolicy; import com.android.volley.toolbox.JsonObjectRequest; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; public class CustomJSONObjectRequest extends JsonObjectRequest { public CustomJSONObjectRequest(int method, String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) { super(method, url, jsonRequest, listener, errorListener); } @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<>(); headers.put("Content-Type", "application/json; charset=utf-8"); return headers; } @Override public RetryPolicy getRetryPolicy() { return super.getRetryPolicy(); } } Este é o código da minha Request Queue: package com.example.sandrini.pokeagenda; import android.content.Context; import com.android.volley.Cache; import com.android.volley.Network; import com.android.volley.RequestQueue; import com.android.volley.toolbox.BasicNetwork; import com.android.volley.toolbox.DiskBasedCache; import com.android.volley.toolbox.HurlStack; public class CustomVolleyRequestQueue { private static CustomVolleyRequestQueue mInstance; private static Context mCtx; private RequestQueue mRequestQueue; private CustomVolleyRequestQueue(Context context) { //recebe o contexto da aplicação //Assim a fila dura o ciclo de vida do app mCtx = context; mRequestQueue = getRequestQueue(); } public static synchronized CustomVolleyRequestQueue getmInstance(Context context) { if (mInstance == null) { mInstance = new CustomVolleyRequestQueue(context); } //retorna uma instância da fila return mInstance; } public RequestQueue getRequestQueue() { if (mRequestQueue == null) { //Cache 10MB Cache cache = new DiskBasedCache(mCtx.getCacheDir(), 10 *1024); Network network = new BasicNetwork(new HurlStack()); mRequestQueue = new RequestQueue(cache, network); mRequestQueue.start(); } return mRequestQueue; } } Este é o código da Activity onde estou tentando fazer a requisição: package com.example.sandrini.pokeagenda; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.Toast; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonRequest; import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; import java.util.EmptyStackException; public class CreateUserActivity extends AppCompatActivity implements Response.Listener, Response.ErrorListener { private static final String REQUEST_TAG = "CreateUser"; Trainer trainer = new Trainer(); EditText loginCreateInput, emailCreateInput, pwdCreateInput; Button createUserButton; private RequestQueue mQueue; JsonRequest jsonRequest; ProgressBar progressBarCreateUser; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_create_user); loginCreateInput = (EditText) findViewById(R.id.login_create_input); emailCreateInput = (EditText) findViewById(R.id.email_create_input); pwdCreateInput = (EditText) findViewById(R.id.pwd_create_input); createUserButton = (Button) findViewById(R.id.create_user_button); progressBarCreateUser = (ProgressBar) findViewById(R.id.progress_bar_create_user); progressBarCreateUser.setVisibility(View.INVISIBLE); } @Override protected void onStart() { super.onStart(); createUserButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (loginCreateInput.getText().toString().equals("")) { Toast.makeText(getApplicationContext(), "Please, set a login", Toast.LENGTH_SHORT).show(); } else if (emailCreateInput.getText().toString().equals("")) { Toast.makeText(getApplicationContext(), "Please, set an email", Toast.LENGTH_SHORT).show(); } else if (pwdCreateInput.getText().toString().equals("")) { Toast.makeText(getApplicationContext(), "Please, set a password", Toast.LENGTH_SHORT).show(); } else { String url = "http://192.168.25.6:8081/PokedexWS/webresources/pokews/poke/insert/trainer"; /*trainer.setUsername(loginCreateInput.getText().toString()); trainer.setEmail(emailCreateInput.getText().toString()); trainer.setPassword(pwdCreateInput.getText().toString());*/ trainer.setUsername("gato"); trainer.setEmail("gato"); trainer.setPassword("gato"); try { JSONObject jsonObject; Gson gson = new Gson(); String trainerToGson = gson.toJson(trainer); jsonObject = new JSONObject(trainerToGson); //String trainerToGson = "{\"username\":"+ "\"" + trainer.getUsername()+ "\"" + "," + //"\"email\":"+ "\"" + trainer.getEmail() + "\"" + "," + //"\"username\":"+ "\"" + trainer.getPassword()+ "\"" + "}"; //createUserButton.setText(trainerToGson); mQueue = CustomVolleyRequestQueue.getmInstance(CreateUserActivity.this.getApplicationContext()).getRequestQueue(); jsonRequest = new CustomJSONObjectRequest(Request.Method.POST, url, jsonObject, CreateUserActivity.this, CreateUserActivity.this); jsonRequest.getHeaders(); mQueue.add(jsonRequest); progressBarCreateUser.setVisibility(View.VISIBLE); } catch (Exception e) { e.printStackTrace(); } } } }); } @Override protected void onStop() { super.onStop(); if(mQueue != null) { mQueue.cancelAll(REQUEST_TAG); } } @Override public void onErrorResponse(VolleyError error) { progressBarCreateUser.setVisibility(View.INVISIBLE); Toast.makeText(getApplicationContext(), "Register failed", Toast.LENGTH_LONG).show(); Log.e("erro400", error.getMessage().toString()); Log.e("erro400", error.getCause().toString()); Log.e("erro400", error.getStackTrace().toString()); } @Override public void onResponse(Object trainerObject) { progressBarCreateUser.setVisibility(View.INVISIBLE); Toast.makeText(getApplicationContext(), "Registered successfully", Toast.LENGTH_LONG).show(); Intent intent = new Intent(CreateUserActivity.this, WelcomeTrainerActivity.class); startActivity(intent); finish(); } } Este é o meu Web Service: package ws; import com.google.gson.Gson; import dao.PokemonDAO; import dao.TrainerDAO; import java.util.ArrayList; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; import javax.ws.rs.Produces; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PUT; import javax.ws.rs.PathParam; import javax.ws.rs.core.MediaType; import model.Pokemon; import model.Trainer; /** * REST Web Service * * @author sandrini */ @Path("pokews") public class PokedexWebService { PokemonDAO pokemonDAO = new PokemonDAO(); TrainerDAO trainerDAO = new TrainerDAO(); @Context private UriInfo context; /** * Creates a new instance of PokedexWebService */ public PokedexWebService() { } /** * Retrieves representation of an instance of teste.GenericResource * @return an instance of java.lang.String */ @GET @Produces(MediaType.APPLICATION_XML) public String getXml() { //TODO return proper representation object throw new UnsupportedOperationException(); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("poke/list") public ArrayList<Pokemon> pokeList() { return pokemonDAO.listPokemon(); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("poke/fetch/{id}") public Pokemon pokeFetch(@PathParam("id") int id) { return pokemonDAO.fetchPokemon(id); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("poke/isFavorite/{id}") public String pokeIsFavorite(@PathParam("id") int id) { return pokemonDAO.isFavorite(id); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("poke/login/{login}/{pwd}") public Trainer pokelogin(@PathParam("login") String login, @PathParam("pwd") String pwd) { return trainerDAO.authUser(login, pwd); } @DELETE @Path("poke/delete/{id}") public boolean delete(@PathParam("id")int id) { return pokemonDAO.deletePokemon(id); } @POST @Consumes(MediaType.APPLICATION_JSON) @Path("poke/insert") public boolean pokeInsert(String content) { Gson gson = new Gson(); Pokemon pokemon = (Pokemon) gson.fromJson(content, Pokemon.class); return pokemonDAO.insertPokemon(pokemon); } @POST @Consumes(MediaType.APPLICATION_JSON) @Path("poke/insert/trainer") public boolean trainerInsert(String content) { Gson gson = new Gson(); Trainer trainer = (Trainer) gson.fromJson(content, Trainer.class); return trainerDAO.insertTrainer(trainer); } @PUT @Consumes(MediaType.APPLICATION_JSON) @Path("poke/update") public boolean pokeUpdate(String content) { Gson gson = new Gson(); Pokemon pokemon = (Pokemon) gson.fromJson(content, Pokemon.class); return pokemonDAO.updatePokemon(pokemon); } /** * PUT method for updating or creating an instance of GenericResource * @param content representation for the resource */ @PUT @Consumes(MediaType.APPLICATION_XML) public void putXml(String content) { } } Eu peguei um código java pra testar o WS e tá funcionando, só não estou conseguindo requisitar pelo android: package acessorest; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.lang.ProcessBuilder.Redirect.Type; import java.net.HttpURLConnection; import java.net.URL; import javax.net.ssl.HttpsURLConnection; /** * * @author marcelosiedler */ public class HttpExemplo { private final String USER_AGENT = "Mozilla/5.0"; public static void main(String[] args) throws Exception { HttpExemplo http = new HttpExemplo(); Gson gson = new Gson(); Pokemon pokemon = new Pokemon(); java.lang.reflect.Type pokemonType = new TypeToken<Pokemon>() { }.getType(); String chamadaWS = "http://192.168.25.6:8081/PokedexWS/webresources/pokews/poke/insert/trainer"; Trainer trainer = new Trainer(); trainer.setUsername("quadrado"); trainer.setEmail("quadrado"); trainer.setPassword("quadrado"); //System.out.println(gson.toJson(trainer)); String trainerToGson = gson.toJson(trainer); /*String trainerToGson = "{\"username\":"+ "\"" + trainer.getUsername()+ "\"" + "," + "\"email\":"+ "\"" + trainer.getEmail() + "\"" + "," + "\"password\":"+ "\"" + trainer.getPassword()+ "\"" + "}";*/ //System.out.println(trainerToGson); //String retorn = http.sendGet(chamadaWS, "DELETE"); //pokemon = gson.fromJson(json, pokemonType); //System.out.println(retorn); http.sendPost(chamadaWS,trainerToGson, "POST"); } // HTTP GET request private String sendGet(String url, String method) throws Exception { URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); // optional default is GET con.setRequestMethod(method); //add request header con.setRequestProperty("User-Agent", USER_AGENT); int responseCode = con.getResponseCode(); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); //print result System.out.println(response.toString()); return response.toString(); } // HTTP POST request private void sendPost(String url, String parameters, String method) throws Exception { URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); //add reuqest header con.setRequestMethod(method); con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty("User-Agent", USER_AGENT); con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); String urlParameters = parameters; // Send post request con.setDoOutput(true); DataOutputStream wr = new DataOutputStream(con.getOutputStream()); wr.writeBytes(urlParameters); wr.flush(); wr.close(); int responseCode = con.getResponseCode(); System.out.println("\nSending 'POST' request to URL : " + url); System.out.println("Post parameters : " + urlParameters); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); //print result System.out.println(response.toString()); } }
-
Estou usando o sql server 2016 para consumir webservice por store procedure. Tenho um webservice em JSON retornando o seguinte: [{"nome":"Rebecca","email":"rebecca@hotmail.com","ra":"12345"},{"nome":"Caroline","email":"caroline@hotmail.com","ra":"23456"},{"nome":"Vanessa","email":"vanessa@yahoo.com.br","ra":"99999"}] Consigo consumi-lo passando uma variável. Se eu deixar meu webservice para receber um parametro e passa-lo eu consigo retornar nome e email do aluno. Porém se eu deixar meu webservice sem a necessidade de receber parametro e retirar a passagem de parametro da procedure e executar, minha procedure retorna null. O que eu preciso mudar no meu código para conseguir retornar a lista completa de alunos que meu webservice expoe? Segue meu código com passagem de parametros que retorna o usuário do RA correspondente: create PROCEDURE webservice_parametros (@RA as varchar (5)) AS BEGIN DECLARE @OBJ INT; DECLARE @URL VARCHAR(200); DECLARE @RESPONSE VARCHAR(8000); SET @URL = 'http://dominio:8080/v1/alunos/' + @RA EXEC SP_OACREATE 'MSXML2.ServerXMLHttp', @OBJ out EXEC SP_OAMETHOD @OBJ, 'OPEN', NULL, 'GET', @URL, FALSE EXEC SP_OAMETHOD @OBJ, 'SEND' exec SP_OAGETPROPERTY @OBJ, 'responseText', @RESPONSE out EXEC SP_OADESTROY @OBJ SELECT JSON_VALUE(@RESPONSE, '$.nome') as nome, JSON_VALUE(@RESPONSE, '$.email') as email END execute webservice_parametros '12345' Meu código que retorna null para um serviço que não precisa de parâmetros create PROCEDURE webservice AS BEGIN DECLARE @OBJ INT; DECLARE @URL VARCHAR(200); DECLARE @RESPONSE VARCHAR(8000); SET @URL = 'http://dominio:8080/v1/alunos/' EXEC SP_OACREATE 'MSXML2.ServerXMLHttp', @OBJ out EXEC SP_OAMETHOD @OBJ, 'OPEN', NULL, 'GET', @URL, FALSE EXEC SP_OAMETHOD @OBJ, 'SEND' exec SP_OAGETPROPERTY @OBJ, 'responseText', @RESPONSE out EXEC SP_OADESTROY @OBJ SELECT JSON_VALUE(@RESPONSE, '$.nome') as nome, JSON_VALUE(@RESPONSE, '$.email') as email END execute webservice
-
Olá pessoal! Sou estudante de ADS e tenho uma dúvida: o PostgreSQL permite a criação de webservice dentro de sua estrutura? Em Oracle, por exemplo, temos o DB Web Service, onde é possível criar um Web Service dentro do SGBD (o que ao meu ver dispensaria o uso de uma linguagem de programação como Java, PHP ou C# para conectar no banco de dados, realizar as operações e mandar um retorno para a aplicação). Obrigado!
-
- web service
- postgresql
-
(e %d mais)
Tags:
-
Alguém poderia me ajudar com o problema abaixo? A propriedade do objeto objColetaReversaTO.produto está me retornado o seguinte erro "Acesso à propriedade deve atribuir à propriedade ou usar seu valor." A mesma me pede: "Produto() AS Public Property remetente As MDFe.wsCorreiosSigepHomReversa.remetenteTO()" Dai criei o objeto "objProdutoTo" e setei suas propriedades, mas na hora de informar que: objColetaReversaTO.produto = objProdutoTo Ele me retorna erro: 'MDFe.wsCorreiosSigepHomReversa.produtoTO' não pode ser indexada porque não possui propriedade padrão. este é o erro que retorna: Não é possível converter um objeto do tipo 'MDFe.wsCorreiosSigepHomReversa.produtoTO' no tipo 'MDFe.wsCorreiosSigepHomReversa.produtoTO[]'. Obrigado!
-
Alguém poderia me ajudar com o problema abaixo? A propriedade do objeto objColetaReversaTO.produto está me retornado o seguinte erro "Acesso à propriedade deve atribuir à propriedade ou usar seu valor." A mesma me pede: "Produto() AS Public Property remetente As MDFe.wsCorreiosSigepHomReversa.remetenteTO()" Dai criei o objeto "objProdutoTo" e setei suas propriedades, mas na hora de informar que: objColetaReversaTO.produto = objProdutoTo Ele me retorna erro: 'MDFe.wsCorreiosSigepHomReversa.produtoTO' não pode ser indexada porque não possui propriedade padrão. este é o erro que retorna: Não é possível converter um objeto do tipo 'MDFe.wsCorreiosSigepHomReversa.produtoTO' no tipo 'MDFe.wsCorreiosSigepHomReversa.produtoTO[]'. Obrigado!
-
Boa tarde, estou com um problema aqui no consumo de um Web Service. Importei com o WSDLImporter e ele me gerou a classe. A estrutura de envio deste WS é assim: <cabecalho> <tag1></tag1> <tag2></tag2> </cabecalho> <Dados> <DadosItem> <tag1></tag1> </DadosItem> <DadosItem> <tag1></tag1> </DadosItem> [...] </Dados> Bem, então o grupo Dados é um array. Assim o Delphi gerou a classe, só não sei como inicializar esse array para preenche-lo. Pois esse array é uma propriedade da classe "envio", e toda vez que tento atribuir um valor dá "acces violation". Se tento dar um SetLength, ocorre erro. A parte da classe deste array está assim: Recep = class(TRemotable) private FCabecalho: Recepcao_Cabecalho; FInformacoes: Recepcao_Informacoes; FDados: Dados; public destructor Destroy; override; property Dados: Dados read FDados write FDados; published property Cabecalho: Recepcao_Cabecalho read FCabecalho write FCabecalho; property Informacoes: Recepcao_Informacoes read FInformacoes write FInformacoes; end; Dados = array of Recepcao_DadosItem; Na minha Unit, tenho assim: env.Dados[0] := dadositem; //env é o objeto da classe Recep //dadositem é o objeto da classe Recepcao_DadosItem Nesse momento ocorre o erro de acces violation, como inicializo esse array? :blink: Obrigado
- 1 resposta
-
- Web Service
- Array
-
(e %d mais)
Tags: