WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   arbetsformedlingen.se API (https://www.wn.se/forum/showthread.php?t=1054814)

ehsanpo 2012-09-04 09:01

arbetsformedlingen.se API
 
Har försökt hela natten att få igång det men den vill inte funka!:mad:

Tanken va först att fånga xml:et med jquery o sen visa det, men det visade sig att man inte kan fånga xml i cross domain...
Ni kan läsa mer om det här:
http://stackoverflow.com/questions/1...i-using-jquery

så blev tvungen att använda mig av en php proxy vilket jag hitta här:
http://github.com/cowboy/php-simple-proxy/

Men nej!:eek: nu har jag problem med [Accept-Language] på header...
ibland funkar den och ibland inte... ibland min webbläsare(testat på FF, chrome,IE) requestar med spec Accept-Language och ibland utan den...
live ex här:
[url]http://ehsanpo.byethost3.com/mmt/proxy.php

om du testa och uppdatera så funkar det ibland....
hittar inte nån info om hur man kan kontakta de som är bakom AFs API heller...

finns det nåt sätt o fixa detta? :confused:

nosnaj 2012-09-04 09:16

Är det Arbetsförmedleingen eller ditt proxy-script som klagar på headern?
Om API:et bara är REST-baserat känns det ju minst lika enkelt att bara använda file_get_contents direkt i php.

pelmered 2012-09-04 09:19

Kan du inte bara göra ett server-side-skript(PHP?) som hämtar XML:en med cURL, file_get_contents() eller fopen().
Sedan parsar du XML:en i ditt skript och skriver ut datan du vill ha, företrädelsevis i JSON-format då det funkar väldigt bra med javascript och AJAX. Sedan hämtar du datan ifrån ditt server-side-script mned AJAX.
På det här sättet kan du också enkelt cacha datan på din server för att snabba upp.

ehsanpo 2012-09-04 10:38

det är arbetsförmedlingen som klagar... ibland går det genom men oftas inte....
PHP-kod:

{"Error":{"statuskod":400,"titel":"Bad Request","beskrivning":"Felaktig headerparameter: [Accept-Language]"}} 

Har testad med cURL, file_get_contents() och fopen() som ni kan se där nere ifall jag har gjort nåt fel, Har även testad header_remove() men det hjälper inte... cURL känns bäst men den funkar inte helatiden..
Ni kan kolla här själva. Bli inte glad om det kommer rätt första gången! uppdatera! :)

Jag kan resten själv! de e bara den xml filen som jag inte an få rätt!

PHP-kod:

header("Content-Type: application/json"); 
$homepage file_get_contents('http://api.arbetsformedlingen.se/platsannons/soklista/kommuner?lanid=10');
echo 
$homepage

PHP-kod:

header("Content-Type: application/json"); 
$handle fopen("http://api.arbetsformedlingen.se/platsannons/soklista/kommuner?lanid=10""r");
echo 
$handle

PHP-kod:

header("Content-Type: application/json;charset=UTF-8"); 
function 
get_data($url) {
  
$ch curl_init();
  
$timeout 5;
  
curl_setopt($chCURLOPT_URL$url);
  
curl_setopt($chCURLOPT_RETURNTRANSFER1);
  
curl_setopt($chCURLOPT_HEADERtrue );
  
curl_setopt($chCURLOPT_CONNECTTIMEOUT$timeout);
  
$data curl_exec($ch);
  
curl_close($ch);
  return 
$data;
}
$returned_content get_data('http://api.arbetsformedlingen.se/platsannons/soklista/kommuner?lanid=10');
echo 
$returned_content ;
?> 


nosnaj 2012-09-04 11:25

Testat att skicka med Accept-Language i dina anrop?

ehsanpo 2012-09-04 11:59

Citat:

Ursprungligen postat av nosnaj (Inlägg 20449204)
Testat att skicka med Accept-Language i dina anrop?

Japp.. funkar inte heller har testat med
Accept-Language: sv-SE,sv;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Language: sv-SE,sv
Accept-Language: sv-SE,sv;q=0.8

Jake.Nu 2012-09-04 14:12

Fungerar för mig varenda gång med dessa headers (den säger ju annars vad som fattas.. Accept eller Accept-Language):

Kod:

GET /platsannons/soklista/kommuner?lanid=10 HTTP/1.0
Host: api.arbetsformedlingen.se
Accept: application/json
Accept-Language: sv-se,sv
Connection: close


ehsanpo 2012-09-04 21:55

här är koden och här kan du se den live. Hos mig funkar det ibland och ibland inte...
vad är det jag gör för fel?
Testat den både på localhost och webbhotell, med olika webbläsare och är fortfarande samma sak...
PHP-kod:

error_reporting(~0);
ini_set('display_errors'1);
header("Content-Type: application/json;charset=UTF-8"); 
header("Accept-Language:sv-se,sv"); 
header("Accept: application/json");
function 
get_data($url) {
  
$ch curl_init();
  
$timeout 5;
  
curl_setopt($chCURLOPT_URL$url);
  
curl_setopt($chCURLOPT_RETURNTRANSFER1);
  
curl_setopt($chCURLOPT_HEADERtrue );
  
curl_setopt($chCURLOPT_CONNECTTIMEOUT$timeout);
  
$data curl_exec($ch);
  
curl_close($ch);
  return 
$data;
};

$returned_content get_data('http://api.arbetsformedlingen.se/platsannons/soklista/kommuner?lanid=10');

echo 
$returned_content 


dAEk 2012-09-04 22:34

Utan några som helst kunskaper i PHP ser det ut som att du trots allt inte skickar med headern. Du sätter den i din response men inte i anropet mot API:t.

Logga anropen så ser du vad som skickas.

coredev 2012-09-05 08:42

Citat:

Ursprungligen postat av dAEk (Inlägg 20449261)
Utan några som helst kunskaper i PHP ser det ut som att du trots allt inte skickar med headern. Du sätter den i din response men inte i anropet mot API:t.

Logga anropen så ser du vad som skickas.

Exakt så! Du sätter alltså dina headers i anropet mot ditt javascript, inte mot AF. Jag är ingen expert på cURL, men följande verkar sätta HTTP:headers i anropet:

Kod:

    curl_setopt($cURL,CURLOPT_HTTPHEADER,array (
        'Accept: application/json',
        'Accept-Language:sv-se,sv',
        'Content-Type: application/json;charset=UTF-8'
    ));



Alla tider är GMT +2. Klockan är nu 23:47.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson