Проблемы с отправкой через LinkedIn ссылки со знаком равенства

Я столкнулся с проблемой, связанной с API общего доступа LinkedIn. Я работаю над проектом iPhone, тестирую свое приложение на iOS 4.0, 5.0. Я использовал этот проект в качестве примера:

[https://github.com/synedra/LinkedIn-OAuth-Sample-Client][1]

Я считал себя гением после успешной реализации этого API не только для обмена обновлениями, но и в следующем формате (как показано в [https://developer.linkedin.com/documents/share-api][1]):

<?xml version="1.0" encoding="UTF-8"?>
<share>
  <comment>83% of employers will use social media to hire: 78% LinkedIn, 55% Facebook, 45% Twitter [SF Biz Times] http://bit.ly/cCpeOD</comment>
  <content>
     <title>Survey: Social networks top hiring tool - San Francisco Business Times</title>
     <submitted-url>http://sanfrancisco.bizjournals.com/sanfrancisco/stories/2010/06/28/daily34.html</submitted-url>
     <submitted-image-url>http://images.bizjournals.com/travel/cityscapes/thumbs/sm_sanfrancisco.jpg</submitted-image-url>
  </content>
  <visibility>
     <code>anyone</code>
  </visibility>
</share>

Следуя советам и примерам, я подготовил строку JSON, которую использовал. Итак, я получил это:

{
  "visibility":
  {
        "code":"anyone"
  },
  "comment":"Asd",
  "content":
  {
        "submitted-url":"http://google.com",
        "title":"googloo",
        "submitted-image-url":"http://pikci.ru/images/img_srchttpwwwcomputerrivercomimagessamsung-chat-335-qwer.jpg"
  }
}

Что ж, с этими данными внутри это работает как шарм. обновление с изображением, кликабельным заголовком и прочим. Идеально.

Затем я попытался поставить ссылку (потому что мне это действительно нужно было для целей моего проекта) со знаком равенства: "=", например, у нас есть http://www.google.md/#q=Nicolas+Steno&ct=steno12-hp&oi=ddle&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=8c5a975d815425a&biw=1920&bih=881

Ну, если мы используем эту ссылку в submit-url и отправим ее, LinkedIn ее получит и даже даст нам ответ. Но он НЕ будет обновляться до нового статуса! Это огромная ошибка для моего приложения, потому что общий ресурс не будет работать, но более половины общих ссылок будут иметь в нем знак равенства. Вот уже третий день борюсь с ним. Я пробовал разные функции кодирования, разные «умные штаны», но безуспешно.

Если кто-то знает, что здесь происходит, буду очень признателен...


person Dumoko    schedule 11.01.2012    source источник
comment
Не совсем уверен, чего вы ожидаете, но если ваш URL-адрес выше использовал ?q= вместо #q=, решит ли это вашу проблему?   -  person Murray McDonald    schedule 11.01.2012


Ответы (1)


Когда я публикую это тело в LinkedIn, мой статус обновляется:

{
    "comment": "Posting from the API using JSON", 
    "content": {
         "submitted-url": 
              "http://www.google.md/#q=Nicolas+Steno&ct=steno12-hp&oi=ddle&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=8c5a975d815425a&biw=1920&bih=881"
     }, "visibility": {
         "code": "anyone"
     }
}

Однако сама ссылка не разрешается правильно. Вполне вероятно, что что-то в этом URL-адресе сбивает с толку наш сокращатель ссылок — мы работаем над устранением этих проблем, но пока вы можете использовать что-то вроде URL-адреса сокращения URL-адресов Google:

body = {"longUrl": article['articleContent']['resolvedUrl']}
resp,content = http.request("https://www.googleapis.com/urlshortener/v1/url?key=xxx","POST",body=simplejson.dumps(body),headers={"Content-Type":"application/json"})
googleresponse = simplejson.loads(content)

... а затем поделитесь этим в LinkedIn. Я понимаю, что это неоптимальное решение, но пока функция общего доступа не будет исправлена ​​​​для обработки этих URL-адресов, она должна помочь вам.

person Kirsten Jones    schedule 11.01.2012
comment
Кирстен, я очень ценю твой ответ! Теперь я вижу, что проблема может быть глубже. Когда я решил жестко закодировать запрос, который, как вы говорите, работает для вас, я заметил, что получаю ответ {_total: 0}, а статус не обновляется. Я знаю, что у андроидов нет проблем с их оберткой. Они отправляют те же ссылки, и с ними все в порядке. Тогда, если мы предположим, что проблема вызвана мной, то, как я делаю запросы и публикую их, могу я спросить вас о чем-то? Кирстен, не могли бы вы подсказать, где в данном случае может быть зарыта проблема? Есть ли способ отправить XML? =/ - person Dumoko; 12.01.2012
comment
Вы можете отправить XML, информация есть на странице API обмена. Однако, если у вас есть работающий клиент на Android, я бы понюхал http-трафик и посмотрел, в чем разница между вашим запросом и рабочим запросом. Если у вас Macintosh, вы можете поделиться своим интернет-соединением через wi-fi и сниффить с помощью HTTPScoop, а затем проверить заголовки, URL-адрес, тело и посмотреть, что отличается. Удачи! - person Kirsten Jones; 13.01.2012