0

コードに次の行があります

$lib  = simplexml_load_file("http://www.goodreads.com/book/title.xml?key=MYAPIKEY&title=" . $current_book,null,true);

これが送信されると、このように送信されます

http://www.goodreads.com/book/title.xml?key=MYAPIKEY&title=Dashing%2BThrough%2Bthe%2BSnow%2BMary%2BHiggins%2BClark%0A

この場合、ブックが見つからず、エラーが返されます。. .

ただし、ブラウザに入力すると

http://www.goodreads.com/book/title.xml?key=MYAPIKEY&title=Dashing+Through+the+Snow+Mary+Higgins+Clark

次に、有効な XML 応答を取得し、これを使用してコードを完成させることができます。

では、 + を %2B に変更せずにこれを送信するにはどうすればよいですか?

URL の末尾にある %0A は何ですか?

4

1 に答える 1

0

URL が 2 回エンコードされているようです。

あなたが示すコードではまったくエンコードしていないので(ちなみに、それはそれを行うのに適切な場所です)、それは以前に起こったに違いありません。

エラーはこのコードではなく、その前のどこかにあります。

次のように修正できます。

$lib  = simplexml_load_file("http://www.goodreads.com/book/title.xml?key=MYAPIKEY&title=" . trim(urldecode($current_book)),null,true);

ただし、これは既存のエラーの回避策にすぎません。以前のエンコーディングを修正する必要があります。

また、あなたが言及した文字は改行文字です。それがトリムの理由です

于 2013-06-13T22:30:37.197 に答える