NSURL URLWithString: исключение повышений

Есть много способов сделать это. Вы можете контейнировать свои API, но зависит от того, как вы хотите их запустить. Все облачные сервисы предоставляют различные варианты запуска контейнеров, если вы рассматриваете облачный сервис.

Есть ли способ сделать это с помощью Docker?

вы можете запускать эти apis в контейнерах независимо, но, как правило, вы должны использовать какой-либо сервис оркестровки контейнеров (например, kubernetes) для запуска ваших контейнеров.

По какому адресу я могу получить доступ к API в моем коде, как только я его запустил?

Вы упаковываете все свои API, включая веб-интерфейс, в контейнеры и развертываете Кубернетес, который является кластером узлов. только вашему внешнему интерфейсу будет назначен внешний ip, а другие ваши apis доступны только через внешний интерфейс, поскольку они находятся за брандмауэром с частным ip. kubernetes имеет свою собственную внутреннюю сеть, и сервисы (ваши API) в кластере могут быть доступны просто по имени сервиса.

Другой способ заключается в развертывании всех API в виртуальной сети, и только веб-интерфейс (с публичным IP) будет иметь доступ к этим услугам.

Как я могу запустить свой внешний интерфейс отдельно без какого-либо внутреннего интерфейса и сделать его доступным извне?

Вы можете запустить свой внешний интерфейс в kubernetes как Контейнер, как описано выше, или вы можете развернуть свой статический интерфейс (только htm css) на некоторый статический хостинг, например aws s3 или лазурные статические сайты.

5
задан John Calsbeek 4 August 2009 в 00:26
поделиться

5 ответов

Я встречал несколько случаев, когда API генерировал исключения, которых не должно быть согласно документации. Мое предложение заключалось бы в том, чтобы убедиться (в вашем фактическом коде), что tmpText действительно не равен нулю (в этом случае выдается исключение, поскольку большинство API, которые ожидают, что NSStrings не сохранятся там nil). После этого просто добавьте вокруг него обработку исключений и отправьте отчет об ошибке на bugreporter.apple.com.

2
ответ дан 15 December 2019 в 01:10
поделиться

Было бы неплохо записать исходное значение строки, чтобы увидеть, что вводится в -initWithString: . Следует знать, что -stringByAddingPercentEscapesUsingEncoding: будет экранировать только символы, которые недопустимы в URL-адресах, они никоим образом не зависят от контекста. Поэтому, если входная строка - «http :::: host ;:», то в ней не будет экранированных символов, и она останется недопустимым URL.

1
ответ дан 15 December 2019 в 01:10
поделиться

Your string, tmpText, must be somehow malformed (meaning something about it doesn't conform to RFC 2396). Unfortunately, since you cannot get the exact contents of that variable from the user, I can't help you figure out why it's malformed. See this post on Apple's Open Radar for a report filed on similar behavior. I know that report is about passing nil into URLWithString, but if it's treating nil the same as any other malformed string, the behavior (throwing an exception) may be the same.

I would suggest taking a look at how newUrl is created and see if you can find any edge cases where it might be possible that disallowed characters are getting in there. My guess is that's where your problem lies.

1
ответ дан 15 December 2019 в 01:10
поделиться

Можете ли вы сделать журнал и посмотреть, что присутствует в newUrl и tmpText перед используя их. Это должно дать вам представление, с чего начать поиск.

stringByAddingPercent ... никогда не вернет nil (если newUrl не равен nil).

Вызов URLWithString: возвратит ноль, если переданная ему строка имеет неправильный формат. Итак, объект url - это то, что вы должны следить за проверкой нуля (перед вызовом метода openURL:)

Вызов URLWithString: возвратит ноль, если переданная ему строка имеет неправильный формат. Итак, объект url - это то, что вы должны следить за проверкой нуля (перед вызовом метода openURL:)

Вызов URLWithString: возвратит ноль, если переданная ему строка имеет неправильный формат. Итак, объект url - это то, что вы должны следить за проверкой нуля (перед вызовом метода openURL:)

0
ответ дан 15 December 2019 в 01:10
поделиться

NSURL возвращает nil для искаженных URL-адресов, NSLog ваша строка и устанавливает точки останова, чтобы точно видеть, что передается вашему методу создания NSURL. Если ваш URLWithString работает с жестко заданным значением, это еще одно доказательство того, что все, что вы передаете, искажено. Будьте осторожны с stringByAddingPercentEscapesUsingEncoding и другими строковыми методами, потому что они также могут добавить дополнительную хрень, которой ваш получатель NSURL может подавиться.

0
ответ дан 15 December 2019 в 01:10
поделиться